使用EmbedSegue可以將StoryBoard中的源視圖控制器跟目標(biāo)控制器連接起來慨菱。防止單個Controller的邏輯過于臃腫啥繁。
創(chuàng)建過程唱蒸。首先在StoryBoard中的Controller上拖入一個ContainerView控件
為其添加約束敷矫。使其布局匹配呈野。
然后將ContainerView自帶的Controller刪除掉低矮。
StoryBoard中拖入一個tableViewController,并且從ContainerView拖線到TableViewController,選擇Embed模式
下一步為上一步完成的Segue連線添加Identifier被冒。
至此在StoryBoard上進(jìn)行的操作都已經(jīng)完成军掂。接下來進(jìn)入代碼階段
從ViewController,包含的TableViewController進(jìn)行顯示之前會先在ViewController上面調(diào)用prepareForSegue方法昨悼。我們可以在這個方法里面對segue的destinationViewController進(jìn)行設(shè)置
@interface ViewController ()
@property (nonatomic, strong) BaseTableViewController *segueBaseTableViewController;
@end
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
NSArray *dataArray = @[@"第一行",@"第二行",@"第三行",@"第四行"];
if ([segue.identifier isEqualToString:@"BaseEmbedSegue"]){
self.segueBaseTableViewController = segue.destinationViewController;
self.segueBaseTableViewController.arrayData = dataArray;
}
}
然后將dataArray作為BaseTableViewController的數(shù)據(jù)源蝗锥。最終顯示效果如下
布局顯示原理為:顯示的根控制器為ViewController。在上面包含一個ContainerView率触。ContainerView內(nèi)部Embed有一個BaseTableViewController.
最后附上Demo地址:https://github.com/wangqingxue/EmbedSegue