从 iOS 5 开始,苹果在其新的IDE版本中提供了StoryBoard(下面叫故事板)编辑器,一直存在着一个巨大的缺陷——静态单元格只能在SDK内置的 UITableViewController 中使用,如果在程序员自己的ViewController中,静态单元格根本不会显示,甚至于编译器会提示错误信息:
“Illegal Configuration: Static table views are only valid when embedded in UITableViewControllerinstances”。
在自己的 ViewController 中使用静态单元格。可以利用 Xcode4.5 以后的 Container View , 我们可以将一个包含有静态单元格UITableViewController “嵌入”到自己的 ViewController中。
详细步骤:
1.在故事板中拖入一个普通的ViewController
2.在故事板中拖入一个常规的 TableViewController 。
3.在这个 TableViewController 中使用静态单元格。
4.在拖一个Container View 到ViewController中, 添加约束做屏幕适配 ,这个 Container View 会自动带有一个 segue 指向另一个 ViewController。将 segue 和那个ViewController 都删除。设置ViewController为首先启动项.
- 5.右键(或ctrl+左键)从 Container View 拖一条线到 TableViewController,然后在弹出的菜单中选择 Embed。
- 6.做到这一步, 很多人不造怎么获取后面的TableViewController, 下面提供一个简单方法:
分别给ViewController和TableViewController指定控制器, 在TableViewController想怎么写代码就怎么写, 但是这里注意:- 1)在push进ViewController时候, 加载故事板代码跟加载 xib 不同
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"SPPersonalViewController" bundle:nil];
SPPersonalViewController *personalViewController = [storyboard instantiateViewControllerWithIdentifier:@"SPPersonalViewController"];
[self.navigationController pushViewController:personalViewController animated:YES];
这里的SPPersonalViewController是你的ViewController
SPPersonalTableViewController是你的TableViewController
- ViewController的设置
- TableViewController的设置
- 然后就可以获取TableViewController , 在里面愉快地写数据源方法和代理方法了
@interface SPPersonalTableViewController ()<UITableViewDelegate, UITableViewDataSource>
@end
@implementation SPPersonalTableViewController
{
.......
}
@end