UI1_UITableViewHomeWork

//

//  AppDelegate.m

//  UI1_UITableViewHomeWork

//

//  Created by zhangxueming on 15/7/14.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import "AppDelegate.h"

#import "ViewController.h"



@interface AppDelegate ()



@end



@implementation AppDelegate





- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.

    ViewController *root = [[ViewController alloc] init];

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:root];

    self.window.rootViewController = nav;

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

    

    return YES;

}

 

//

//  ViewController.h

//  UI1_UITableViewHomeWork

//

//  Created by zhangxueming on 15/7/14.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import <UIKit/UIKit.h>

#import "DetailViewController.h"



@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate,sendDetailMessage>





@end







//

//  ViewController.m

//  UI1_UITableViewHomeWork

//

//  Created by zhangxueming on 15/7/14.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import "ViewController.h"

#import "DetailViewController.h"



@interface ViewController ()

{

    UITableView *_tableView;

    NSMutableArray *_dataList;

}

@end



@implementation ViewController



- (void)viewDidLoad {

    [super viewDidLoad];

    

    [self creatDataSource];

    [self creatUI];

}



- (void)creatDataSource

{

    

    //@"phone"

   

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    _dataList = [defaults objectForKey:@"phone"];

    if (!_dataList) {

        _dataList = [NSMutableArray array];//指向空对象(初始化)

        for (int i=0; i<10; i++) {

            NSMutableDictionary *dict = [NSMutableDictionary dictionary];

            NSString *name = [NSString stringWithFormat:@"人物%i", i+1];

            NSString *number = [NSString stringWithFormat:@"1852106733%i",arc4random()%10];

            [dict setObject:name forKey:@"personName"];

            [dict setObject:number forKey:@"phoneNumber"];

            [_dataList addObject:dict];

        }

    }

}



- (void)creatUI

{

    _tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];

    self.automaticallyAdjustsScrollViewInsets = YES;

    _tableView.delegate = self;

    _tableView.dataSource = self;

    [self.view addSubview:_tableView];

    

    UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPerson)];

    self.navigationItem.rightBarButtonItem = item;

}





- (void)addPerson

{

    DetailViewController *dvc = [[DetailViewController alloc] init];

    dvc.delegate = self;

    dvc.indexPath = nil;

    [self presentViewController:dvc animated:YES completion:nil];

    //[self.navigationController pushViewController:dvc animated:YES];

}



#pragma mark ---sendDetailMessage---



- (void)sendName:(NSString *)name andPhoneNumber:(NSString *)number andIndexPath:(NSIndexPath *)indexPath

{

    NSMutableDictionary *dict = [NSMutableDictionary dictionary];

    [dict setObject:name forKey:@"personName"];

    [dict setObject:number forKey:@"phoneNumber"];

    if (indexPath) {//修改

        [_dataList replaceObjectAtIndex:indexPath.row withObject:dict];

    }

    else

    {//添加

        [_dataList addObject:dict];

    }

    

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:_dataList forKey:@"phone"];

    [defaults synchronize];

    

    [_tableView reloadData];

}



#pragma mark   ---UITableViewDataSource---



- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    return 1;

}





- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return [_dataList count];

}



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString *reuseIdentifier = @"cell";

    

    UITableViewCell  *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];

    if (!cell) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier];

    }

    cell.accessoryType = UITableViewCellAccessoryCheckmark;

    cell.textLabel.text = [[_dataList objectAtIndex:indexPath.row] objectForKey:@"personName"];

    cell.detailTextLabel.text = [[_dataList objectAtIndex:indexPath.row] objectForKey:@"phoneNumber"];

    

    return cell;

}





- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

    DetailViewController *dvc = [[DetailViewController alloc] init];

    dvc.person = [_dataList objectAtIndex:indexPath.row];

    dvc.indexPath = indexPath;

    dvc.delegate = self;

    [self.navigationController pushViewController:dvc animated:YES];

}



- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}



@end

 

//

//  DetailViewController.h

//  UI1_UITableViewHomeWork

//

//  Created by zhangxueming on 15/7/14.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import <UIKit/UIKit.h>



@protocol sendDetailMessage <NSObject>



- (void)sendName:(NSString *)name andPhoneNumber:(NSString *)number andIndexPath:(NSIndexPath *)indexPath;



@end



@interface DetailViewController : UIViewController

<UITextFieldDelegate>



@property (weak, nonatomic) id <sendDetailMessage> delegate;

@property (strong, nonatomic)NSMutableDictionary *person;

@property (strong, nonatomic)NSIndexPath *indexPath;



@end











//

//  DetailViewController.m

//  UI1_UITableViewHomeWork

//

//  Created by zhangxueming on 15/7/14.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import "DetailViewController.h"



@interface DetailViewController ()



@end



@implementation DetailViewController



- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    UITextField *nameTextField = [[UITextField alloc] initWithFrame:CGRectMake(10, 100, self.view.frame.size.width-20,50)];

    nameTextField.borderStyle = UITextBorderStyleLine;

    [nameTextField becomeFirstResponder];

    nameTextField.backgroundColor = [UIColor yellowColor];

    nameTextField.delegate = self;

    nameTextField.tag = 100;

    nameTextField.text = [_person objectForKey:@"personName"];

    

    [self.view addSubview:nameTextField];

    

    UITextField *numberTextField = [[UITextField alloc] initWithFrame:CGRectMake(10, 200, self.view.frame.size.width-20,50)];

    numberTextField.borderStyle = UITextBorderStyleLine;

    numberTextField.backgroundColor = [UIColor yellowColor];

    numberTextField.delegate = self;

    numberTextField.tag = 101;

    numberTextField.text = [_person objectForKey:@"phoneNumber"];

    [self.view addSubview:numberTextField];

    

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];

    btn.frame = CGRectMake(50,300, self.view.frame.size.width-100, 50);

    [btn setTitle:@"工具按钮" forState:UIControlStateNormal];

    [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:btn];

    self.view.backgroundColor = [UIColor whiteColor];

}



- (void)btnClick

{

    UITextField *nameField = (UITextField *)[self.view viewWithTag:100];

    UITextField *numberField = (UITextField *)[self.view viewWithTag:101];

    if (nameField.text && numberField.text) {

        if ([_delegate respondsToSelector:@selector(sendName:andPhoneNumber:andIndexPath:)]) {

            [_delegate sendName:nameField.text andPhoneNumber:numberField.text andIndexPath:_indexPath];

        }

    }

    if (_person) {

        [self.navigationController popViewControllerAnimated:YES];

    }

    else{

        [self dismissViewControllerAnimated:YES completion:nil];

    }

}



- (BOOL)textFieldShouldReturn:(UITextField *)textField

{

    [textField resignFirstResponder];

    return YES;

}





- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}



/*

#pragma mark - Navigation



// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

}

*/



@end

 

你可能感兴趣的:(UITableView)