将另一个nib加载到viewController中

时间:2012-07-02 22:08:48

标签: iphone ios xib nib

我有一个包含自己的.nib文件的ViewController,我想将另一个.nib加载到这个ViewController中,这将是一个各种菜单...但是我只是不确定如何做到这一点,并希望一些帮助。

在我向您展示代码之前,我将解释我所做的事情。

  • 我有一个带有Nib的UIViewController,这是我的主要观点。
  • 我创建了另一个笔尖,它将成为一个菜单,显示为主视图的子视图
  • 我已将此nibs类更改为主视图的UIViewController,以便它可以看到所有相同的IBActions和插座。
  • 然后我运行下面的代码尝试加载单独的笔尖作为子视图但是当我运行它时,另一个笔尖的子视图没有显示....

        jumpBarPortraitNib = [[UIView alloc] initWithFrame:CGRectMake(0.0, 50.0, 320.0, 367.0)];
    
    
    
        // add jumpbar container to view
        [self.view insertSubview:jumpBarPortraitNib belowSubview:actionTabBar];
    

2 个答案:

答案 0 :(得分:3)

这里显然有些混乱。

nib只是一个包含(*)对象的存档,包括(通常)一个或多个视图对象(在您的情况下为UIView)。您没有“将笔尖加载为子视图”。您实例化nib,可能会将其交给UIViewController来拥有和管理它,并将nib中引用的视图添加到视图层次结构中。

您对第一行代码所做的就是创建一个具有给定帧大小的通用UIView实例,并将其插入到[自我视图]中。你写的实际引用笔尖的内容中只有 nothing ,即使你把你的视图误称为笔尖。

对于你正在做的事情,我可能会选择两条路线之一:

  1. 将视图添加为原始nib中的单独顶级视图,并将其连接到IBOutlet。然后,您可以在已设置为nib文件所有者的常见UIViewController实例中轻松显示菜单。
  2. 有一个单独的UIViewController实例将只是管理功能表视图,以及您将使用通过实例笔尖的内容-initWithNibName:作为@Aaron提及。 (请注意,您不需要在外部设置框架;框架将作为视图的属性存储在笔尖中。)
  3. *:不是,但你可以这样想。

答案 1 :(得分:0)

您需要使用initWithNibName,然后在以下行中设置框架:

UIViewController * jumpVC = [[UIViewController alloc] initWithNibName:@"jumpBarPortrait" bundle:nil];
jumpVC.view.frame = //your frame