在storyboard中,TableViewCell既可以从一个TableViewController里面得到,也可以在一个通用的ViewController里面,通过拉相应的tableView来得到。现在分两种情况讨论
1.对于一个TableViewController里面的cell而言,它的cell显示以及添加select动作之后的响应,总共有一下情况。
所以总共有下面几种情况:
(1) 如果设置静态的tableviewCell,并且没有对应文件,那么设置push动作可以切换画面
(2) 如果设置是静态的tableviewCell,如果关联了文件,但是文件里面没有,numberOfSectionsInTableView ,那么可以显示出静态的sotryboard中的cell,并且点击相关cell,能进行画面的切换
(3) 如果设置是静态的tableviewCell,并且关联了一个文件,但是文件里面有
numberOfSectionsInTableView ,– (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; 这两个函数则必须要与静态设置的tableViewCell数量一致,不然画面会奔溃;并且
– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath这个函数不需要实现,此时点击push还是可以实现画面切换;如果这个函数实现了,运行会崩溃
(4) 如果是动态的tableviewCell, 通常是无法在storyboard里面给tableviewcell添加push动作的切换对象的,因为动态的cell会从文件中生成,而从storyboard中定义的cell,不一定会显示出来。
实际上还是有一个办法,可以从动态的tableview里面,实现添加cell的push动作
方法是:
给每一个 cell的identifier给出具体的定义,然后在
– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
上面函数里面使用下面:
NSUInteger row = [indexPath row];
NSString *identifier = nil;
if (row%2 == 0)
{
identifier = @”GreenIdentifier”;
}
else
{
identifier = @”RedIdentifier”;
}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
通过上面的绿色的东西,可以获得storyboard里面的cell
2.第二种,也就是说原生的viewController并不是UITableviewController这个类,并且往这个类里面添加了TableView,如果要实现显示TableView中的cell功能,必须要再ViewControoler关联的文件里面,实现cell的三个方法
numberOfSectionsInTableView
cellForRowAtIndexPath
numberOfRowsInSection:(NSInteger)section
并且应该也要设置cell的类型为动态的cell
也就是这个时候,寄居在非TableViewController的TableView不支持static模式
除此之外,还要把tableview的datasource和delegate设置为当前的viewController才行。
如果要实现点击cell,能够实现相应的select功能,需要在storyboard里面定义每一个cell的Identifier,并在viewController.m文件里面引用该cell的Identifiel,这样在storyboard里面定义的select事件才会被响应。