UI9_UITableView练习
//
// RootViewController.h
// UI9_UITableView练习
//
// Created by YIem on 15/12/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import <UIKit/UIKit.h>
@interface RootViewController : UIViewController
@end
//
// RootViewController.m
// UI9_UITableView练习
//
// Created by YIem on 15/12/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import "RootViewController.h"
import "SecondViewController.h"
@interface RootViewController ()<UITableViewDataSource, UITableViewDelegate, PassDelegate>
@property (nonatomic, retain)UITableView *tableView;
@property (nonatomic, retain)NSMutableArray *dataArr;
@property (nonatomic, retain)NSIndexPath *index;// 记录点击的cell位置
@end
@implementation RootViewController
(void)viewDidLoad {
[super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor whiteColor]; // self.title = @"YIem"; // self.tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];
// _tableView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:_tableView];
[_tableView release];
_tableView.delegate = self;
_tableView.dataSource = self;
// 数据处理
self.dataArr = [@[@"大娃", @"二娃", @"三娃", @"四娃", @"五娃", @"六娃", @"七娃"]mutableCopy];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// 通过数组元素个数 动态设置cell行数
return _dataArr.count;
} (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (!cell) {cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"] autorelease];
}
// 通过行数从数组中获取对应下标的元素
cell.textLabel.text = _dataArr[indexPath.row];
return cell;
}
// 点击cell
(void)tableView:(UITableView )tableView didSelectRowAtIndexPath:(NSIndexPath )indexPath
{SecondViewController *secVC = [[SecondViewController alloc]init]; // 传值 secVC.name = _dataArr[indexPath.row]; // 协议传值 secVC.delegate = self; // 记录点击cell的位置 self.index = indexPath; [self.navigationController pushViewController:secVC animated:YES]; [secVC release];
}
(void)passValue:(NSString *)name
{// 修改信息 // 通过记录的点击位置信息 将传递过来的值 替换原内容 [_dataArr replaceObjectAtIndex:_index.row withObject:name]; // tableView整体刷新 重新执行所有协议方法
// [_tableView reloadData];
// 单行刷新 // 参数1: 需要刷新的下标 // 参数2: 刷新动画 [_tableView reloadRowsAtIndexPaths:@[_index] withRowAnimation:UITableViewRowAnimationRight];
}
(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
//
// SecondViewController.h
// UI9_UITableView练习
//
// Created by YIem on 15/12/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import <UIKit/UIKit.h>
@protocol PassDelegate <NSObject>
- (void)passValue:(NSString *)name;
@end
@interface SecondViewController : UIViewController
@property (nonatomic, copy)NSString *name;
@property (nonatomic, assign) id<PassDelegate>delegate;
@end
//
// SecondViewController.m
// UI9_UITableView练习
//
// Created by YIem on 15/12/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import "SecondViewController.h"
@interface SecondViewController ()
@property (nonatomic, retain)UITextField *textField;
@end
@implementation SecondViewController
(void)viewDidLoad {
[super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor whiteColor]; // self.textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 100, 100, 30)]; _textField.backgroundColor = [UIColor yellowColor]; _textField.text = self.name; [self.view addSubview:_textField]; [_textField release]; // buttomn UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(100, 200, 100, 30)]; button.backgroundColor = [UIColor redColor]; [self.view addSubview:button]; [button release]; [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
}
(void)back
{[self.delegate passValue:_textField.text]; [self.navigationController popViewControllerAnimated: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
//
// SecondViewController.m
// UI9_UITableView练习
//
// Created by YIem on 15/12/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import "SecondViewController.h"
@interface SecondViewController ()
@property (nonatomic, retain)UITextField *textField;
@end
@implementation SecondViewController
(void)viewDidLoad {
[super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor whiteColor]; // self.textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 100, 100, 30)]; _textField.backgroundColor = [UIColor yellowColor]; _textField.text = self.name; [self.view addSubview:_textField]; [_textField release]; // buttomn UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(100, 200, 100, 30)]; button.backgroundColor = [UIColor redColor]; [self.view addSubview:button]; [button release]; [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
}
(void)back
{[self.delegate passValue:_textField.text]; [self.navigationController popViewControllerAnimated: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