如何从一个XIB文件中包含的3个选择中加载一个视图?

时间:2012-06-27 16:40:27

标签: objective-c uiview uiviewcontroller presentmodalviewcontroller

简而言之,我如何设法从一组XIV文件中包含的一组UIView加载特定的uiview? iboutlets?如何?

在某些情况下,我希望显示第一个视图而不是第二个,有时我希望显示第3个而不是第1个。它们都是类似的UIViews然而只有一个可以显示MODALLY呈现..我知道哪个UIView显示取决于用户与点击按钮的交互..但问题是如何我具体选择某个视图显示然后附加它模态地呈现它。

详细说明这是我到目前为止所做的工作:

您好, 我在TestViewController.xib文件中有三个视图对象,如下所示:

3 views present in one xib file

此xib'文件所有者'连接到TestViewController类。

在运行时,我以编程方式实例化TeamViewController类,如下所示:

TestViewController *tVController = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];

然后我按照这样的方式呈现视图:

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:ls];
    [nav setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    [nav setModalPresentationStyle:UIModalPresentationFormSheet];
    nav.navigationBar.tintColor = [UIColor blackColor];
    [nav setNavigationBarHidden:YES]; 

    [rootViewController.navigationController presentModalViewController:nav animated:YES];
    nav.view.backgroundColor = [UIColor blackColor];
    self.modalNavController = nav;
    [nav release];
    [tVController release];

这一切都有效,我的视图已加载,但默认情况下它只会自动加载其中一个视图。 我想要做的是能够知道如何在实例化TestViewController时只加载SPECIFIC UIView。我想到实现这一目标的一种方法是为他们创建IBOutlets并管理哪个视图显示如此?所以我在课堂上创建了三个IBOutlets,然后将它们从Xib的文件连接到每个UIView。这连接都很好。

IBOutlet *view1;
IBOutlet *view2;
IBOutlet *view3;

我可以做这样的事情:

[self.view addSubview:view2]; 

这将正确显示view2,但不是在模态视图中,因为在实例化TestViewController时我会非常喜欢它。

任何人都可以指导我如何实现我的这个目标吗?

由于

1 个答案:

答案 0 :(得分:1)

您应该为每个视图指定一个唯一标记,然后使用viewWithTag:

<强> - 编辑 -

为了实现这一点,您可能需要执行NSNib *n = [[NSNib alloc] initWithNibNamed:bundle:]