我在我的应用程序中使用了一个UITableViewController表,并且我添加了一个NSFetchedResultsController来提供表中显示的数据(设置为自己的委托).
然而,我想添加一个唯一的单元格作为表的最后一个单元格,与NSFetchedResultsController的谓词生成的项目无关,我希望这个单元格始终位于表的底部.
我已经尝试在表视图数据源中简单地添加了1个这些方法:
- (NSUInteger)numberOfSectionsInTableView:(UITableView *)sender { return [[self.fetchedResultsController sections] count] + 1; } - (NSUInteger)tableView:(UITableView *)sender numberOfRowsInSection:(NSUInteger)section { return [[[self.fetchedResultsController sections] objectAtIndex:section] numberOfObjects] + 1; }
然后捕获这样的额外行的情况,如此生成(表只有1个部分):
- (UITableViewCell *)tableView:(UITableView *)sender cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == [self.fetchedResultsController.fetchedObjects count]) { //Generate the last cell in table. } else { //Generate the rest of the cells like normal. } return nil; //To keep the compiler happy. }
这将检查索引是否是最后一个单元格,并适当地处理.
但是我仍然在运行时收到以下错误:
*** Terminating app due to uncaught exception 'NSRangeException',reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
任何想法是什么导致这个?还是有更好的方法来添加一个额外的行到由NSFetchedResultsController控制的表视图?
解决方法
获取的结果控制器与tableview紧密相连,如果您按照文档(更新等)中所示实现所有数据源方法.它会变得很混乱和黑客.
你的“额外的行”可以是表的页脚视图吗?这将永远在底部.它不会太多的工作,使它看起来像一个单元格,虽然从它的外观,你希望它看起来不同于其他单元格反正.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。