如何将 xib 加载到一个视图控制器中的两个容器视图中

Posted

技术标签:

【中文标题】如何将 xib 加载到一个视图控制器中的两个容器视图中【英文标题】:How to load xib into two Container Views within one view controller 【发布时间】:2013-07-03 20:28:47 【问题描述】:

我想创建一个单人单圈计时器 xib/类,并将其加载到我的故事板上的单个视图控制器上两次。这两个实例中的每一个都将用于在单个 ViewController 上计时和比较两个人的单圈时间。

我在故事板视图控制器 (LapCounterViewController) 中并排布置了两个容器视图

我还创建了一个 xib 和类文件作为单人单圈计时器 (LapCounterNibViewContainer)

如何创建 LapCounterNibViewContainer 的两个实例并将其放入每个容器视图中

_vc1 = [[LapCounterNibViewController alloc] initWithNibName:@"LapCounterNibViewController"  bundle:nil];
_vc1.view.frame = self.LapCounterFrame1.frame;
//_vc1.delegate = self;

[_LapCounterFrame1 addChildViewController:_vc1];
[_vc1 didMoveToParentViewController:self];
[self.view addSubview: _vc1.view];

【问题讨论】:

【参考方案1】:

在故事板中,您可以将两个容器视图添加到同一个视图控制器,并通过右键单击拖动并选择嵌入将它们连接到同一个子视图控制器。这创造了这样的转场:

点击segue并给它一个标识符。然后,将prepareForSegue 方法添加到您的父视图控制器,并根据需要单独设置圈计时器的一些属性。

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    if ([segueName isEqualToString: @"embedSegueToLapTimerOne"]) 
        LapCounterNibViewController * childViewController = (LapCounterNibViewController *) [segue destinationViewController];
        [childViewController setFoo:bar1];
    
    if ([segueName isEqualToString: @"embedSegueToLapTimerTwo"]) 
        LapCounterNibViewController * childViewController = (LapCounterNibViewController *) [segue destinationViewController];
        [childViewController setFoo:bar2];
    
    

【讨论】:

以上是关于如何将 xib 加载到一个视图控制器中的两个容器视图中的主要内容,如果未能解决你的问题,请参考以下文章

如何将视图 XIB 作为子视图加载到视图控制器 XIB 中

将单独的 xib 视图控制器加载到情节提要导航中[重复]

如何将 nib 文件中的 UITableView 加载到父视图控制器中的容器视图中?

按下按钮时如何加载另一个xib

将 XIB 中的按钮链接到情节提要中的视图控制器

将 XIB 加载到另一个 XIB 的视图中