• 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
    
  • 相关阅读:
    Git分支合并:Merge、Rebase的选择
    linux系统下MySQL表名区分大小写问题
    Spring Mvc和Spring Boot读取Profile方式
    Git删除远程分支
    TortoiseGit push免输密码
    git [command line] fatal: Authentication failed for
    Jenkins [Error] at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:192)
    FAIL
    WIN下修改host文件并立即生效
    MYSQL 创建数据库SQL
  • 原文地址:https://www.cnblogs.com/0515offer/p/4645324.html
Copyright © 2020-2023  润新知