今天项目中遇到一种情况,类似微信添加好友的界面交互,添加好友界面有三个固定项,点击第一个之后出现搜索界面。根据经验,首先是添加应该静态单元格视图,然后点击第一个单元格之后,创建 UISearchDisplayController。但是在实际操作中遇到了问题。
1 UISearchDisplayController内部有一个TableView,需要在当前ViewController实现代理方法,但是一旦实现,静态单元格也会调用该方法。于是我推断UISearchDisplayController内部应该做了 if([tableView.deleage responseToSelector:@selector(xxx)])判断,如果实现了就会调用代理方法对dataSource进行赋值,如果没有实现,则从storyboard文件中读取静态单元格数据进行赋值。这就会出现冲突,因为一旦实现了UISearchBarController的UITableView代理方法,则静态单元格就会失效。于是问题来了,如何解决?
1 放弃使用静态单元格,都用动态单元格,然后在代理方法里进行判断。
2 仍然使用静态单元格,但是把两个tableview隔离到不同的viewcontroller,我们可以在当前ViewController里添加containerView,指向另外一个UITableViewController,在另外这个TableViewController里添加静态单元格。
这里还要注意一点,如果用静态单元格,必须用UITableViewController。否则会报如下错误:'[<ViewController 0x14d81b40> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key staticDataSource.'
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。