导航控制器和表视图密不可分,在实际的应用程序中实现导航控制器,几乎总要实现至少一个表,因为导航控制器的强大之处在于它能够处理复杂的分层数据,在iphone上,连续的表视图是表示分层数据最理想的分层方式。
创新互联主要从事成都网站建设、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务新华,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575导航控制器使用内置动画在视图之间顺利移动,无需编写历史纪录控制,导航控制器会自动处理Back按钮时间,让用户“岀栈”。
UINavigationController是构建分层应用的主要工具,与UITabBarController很类似,但是前者是以栈来实现功能,关于栈,我们并不陌生,遵守先进后出的原则,向栈中添加一个对象为入栈,从栈中删除一个对象叫出栈。
UINavigationController是构建分层应用程序的主要工具。本次的应用程序将由一个导航控制器和六个子控制器组成。
如何把表视图中的数据写入子表中;
.如何把表视图中的数据写入可以读取甚至可以编辑详细数据的内容视图中;
.如何通过表清单来从多个值中进行选择;
.如何通过编辑模式从表视图中删除行。
下面是触摸顶级试图第一行Disclosure Butttons时出现的界面(第一个视图右侧的扩展图标被称为是扩展指示器,用于告知用户触摸这一行将切换到另一个表视图),其他几个试图都是如此。
在编辑过程中需注意以下几点:
1)列表只显示来自数组的多个行,因此需要声明一个数组实现表视图时需要遵从两个协议UITableViewDelagate和UITableViewDataSource,类需要这两个协议来充当表视图的委托和数据源,然后声明一个数组用于放置将要显示的数据。
@interface Disclosure_Buttons : UIViewController
{
NSArray *listData;
}
2)方法返回数组计数个数:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [listDatacount];
}
3) 方法获取一个可重用单元,如果单元不存在则创建一个新的单元。然后从对应查询的数组中获取对象,将单元的文本设置成控制器标题并返回单元
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
staticNSString*DisclosureCellIdentifier = @"DisclosureCellIdentifier";
UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:DisclosureCellIdentifier];
if (cell == nil)
{//创建一个新的单元
cell=[[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:DisclosureCellIdentifier];
}
//对应查询数组中获取的对象,将单元文本设置成控制器标题并返回单元
NSUInteger row=[indexPath row];
NSString *rowData=[listDataobjectAtIndex:row];
cell.textLabel.text=rowData;
cell.accessoryType=UITableViewCellAccessoryDetailDisclosureButton;
return cell;
}
4) tableView:didSelectRowAtIndexPath:方法是用户单击某行后调用的方法,如果在调用时需要触发信息展开,则调用此方法
5)tableView:editingStyleForRowAtIndexPath
方法是表视图可以查询指定行是否可以进行删除,是否可以将新行插入到指定位置。
通过返回UITableViewEditingStyleNone表示不支持插入和删除行。
6)从属性表中加载数据
-(void)viewDidLoad{
NSString *path=[[NSBundlemainBundle] pathForResoure:@"computers" ofType:@"plist"];
NSMutableArray *array=[[NSMutableArrayalloc] initWithContentsOfFile:path];
self.list=array;
[array release];
[superviewDidLoad];
}
7)UITableViewCellEditingStyleNone:不允许被编辑
UITableViewCellEditingStyleDelete:允许删除
UITableViewCellEditingStyleInsert:允许插入
8)encodeWithCoder:方法把对象编码为归档文件
initWithCoder:方法从归档文件中创建新的对象
9)UITextFieldDelegate:通过遵循这个协议,当用户对某个字段做出修改时,会得到通知并保存修改。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。