iOS Dev 深入浅出 导航控制器(二)with表视图相关操作
来源:互联网 发布:mac隐藏下面的图标 编辑:程序博客网 时间:2024/06/06 07:15
今天的内容是在上一篇文章(<<iOS Dev 深入浅出 导航控制器(一)>>)的程序上,进行进一步操作,主要是为上一个程序添加更多的功能,来描述表视图控制器,导航控制器和表视图控制器是我们iOS应用中最常用的两个控制器,今天的内容呢,是围绕表视图控制器的相关操作进行撰写,因为我们已经了解导航控制器的操作了.我们现在为这个程序添加更多的二级视图.
首先一个SecondSingleMarkViewController(.h,.m),它同样继承于我们的统一二级管理控制器MySecondViewController,这个的主要功能是,实现TableView内的单选操作,我们会看到选择行后面会有一个"对号".首先,我们将SecondSingleMarkViewController导入MyBaseViewController和MySecondViewController,并在MyBaseViewController中像添加FirstShowMoreViewController一样添加它:
SecondSingleMarkViewController *secondSingleMarkViewController = [[SecondSingleMarkViewController alloc] initWithStyle:UITableViewStylePlain]; secondSingleMarkViewController.title = @"SingleMark"; secondSingleMarkViewController.ImageForRow = [UIImage imageNamed:@"checkmarkControllerIcon.png"]; [arrayforcontrollers addObject:secondSingleMarkViewController];
这样之后我们就可以专心的去写SecondSingleMarkViewController了,同样的添加显示数据,同样的让它显示出来,倒是这次们要添加这个对号扩展图标,所以我们在-(UITableViewCell *)tableView: cellForRowAtIndexPath:方法中添加上:
cell.accessoryType = ([lastindexpath row] == [indexPath row]&&lastindexpath !=nil)?UITableViewCellAccessoryCheckmark:UITableViewCellAccessoryNone;
这里我们在h文件里面,声明了一个NSIndexPath *lastindexpath,它主要用来记录最后选择的行,如果没有它,那么在页面内滑动,会看到"对号位置不准确",之后开始添加方法-(void)tableView:didSelectRowAtIndexPath:来完成单选操作,
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSInteger newRow = [indexPath row]; NSInteger lastRow = (lastindexpath != nil)?[lastindexpath row]:-1; if (newRow != lastRow) { UITableViewCell *newcell = [tableView cellForRowAtIndexPath:indexPath]; newcell.accessoryType = UITableViewCellAccessoryCheckmark; UITableViewCell *lastcell = [tableView cellForRowAtIndexPath:lastindexpath]; lastcell.accessoryType = UITableViewCellAccessoryNone; self.lastindexpath = indexPath; } //取消选择,既使选择行不高亮 [tableView deselectRowAtIndexPath:indexPath animated:YES];}这样,我们的SecondSingleMarkViewController就完成了,运行起来如图:
现在我们再添加一个二级视图控制器ThirdCostomAccessoryViewController(.h,.m)同样继承我们的统一二级管理控制器MySecondViewController,这个的主要功能是,实现自定义Cell的Accessory Icon.首先,我们将ThirdCostomAccessoryViewController导入MyBaseViewController和MySecondViewController,并在MyBaseViewController中像添加FirstShowMoreViewController一样添加它:
ThirdCostomAccessoryViewController *thirdCostomAccessoryViewController = [[ThirdCostomAccessoryViewController alloc] initWithStyle:UITableViewStylePlain]; thirdCostomAccessoryViewController.title = @"CostomAccessory"; thirdCostomAccessoryViewController.ImageForRow =[UIImage imageNamed:@"rowControlsIcon.png"]; [arrayforcontrollers addObject:thirdCostomAccessoryViewController];
之后的工作就是编辑ThirdCostomAccessoryViewController,又是同样的创建数据,和显示列表,在选择行时候触发动作,显示一个UIAlertView对象,并[alertview show]这都很简单,下面我们开始写这个自定义的扩展图标:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *pathindex = @"pathindex"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:pathindex]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:pathindex]; //初始化Button UIImage *imageup = [UIImage imageNamed:@"button_up.png"]; UIImage *imagedown = [UIImage imageNamed:@"button_down.png"]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0.0, 0.0, imageup.size.width, imageup.size.height); [button setTitle:@"But" forState:UIControlStateNormal]; [button setBackgroundImage:imageup forState:UIControlStateNormal]; [button setBackgroundImage:imagedown forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(ButtonCilcked:) forControlEvents:UIControlEventTouchUpInside]; //这里的方法用来自定义扩展图标,而accessoryType是用来调用系统定义的4中样式 cell.accessoryView = button; } cell.textLabel.text = [arraylist objectAtIndex:[indexPath row] ]; //这里我们给每个button一个标签,一便我们在之后调用的时候找到它,这里是一个小技巧 UIButton *button = (UIButton *)cell.accessoryView; button.tag = [indexPath row]; return cell;}再来写一下按键事件ButtonCilcked:方法
-(IBAction)ButtonCilcked:(id)sender{ UIButton *button = sender; NSString *buttonTitle = [arraylist objectAtIndex:button.tag]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"You choose:" message:buttonTitle delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show];}这样我们就完成了工作,
这样我们这个程序就有了三个功能,功能还有,我会继续写下去
- iOS Dev 深入浅出 导航控制器(二)with表视图相关操作
- iOS Dev 深入浅出 导航控制器(一)
- iOS Dev 初识 导航控制器
- 导航控制器和表视图(二)
- IOS之导航控制器与表视图
- IOS开发-表视图LV3导航控制器
- iOS UI07_导航视图控制器
- iOS开发-视图控制器相关
- IOS UITableView表视图和导航控制器的交互使用
- iOS 导航控制器、标签、表视图的创建方法
- IOS-导航视图控制器的使用
- IOS学习(六)导航视图控制器
- 手动操作导航控制器的子视图控制器的数组
- IOS开发学习笔记(导航控制器,视图控制器,模态)
- iOS 导航控制器相关的设置
- iOS Dev (36) 视图控制器的生命后期
- 导航控制器和表视图(一)
- 导航视图控制器UINavigationController
- 控制pb鼠标的移动
- 关于linux文件系统监控(2)
- Perl 最佳实践(节选) --- 11
- QMapControl介绍
- linux之tar命令参数分析
- iOS Dev 深入浅出 导航控制器(二)with表视图相关操作
- android 中的抖动效果(仿苹果)
- c指针
- js获取URL地址
- linux之shutdown命令参数分析
- Unity3D GUI基础
- 解决ymPrompt.win弹出空白页
- 虚拟机vmware 2 ,Solaris 32位 转换 64位 问题
- SQL AUTO INCREMENT 字段