【问题标题】:How to load one view from a selection of 3 all contained in one XIB file?如何从一个 XIB 文件中选择的 3 个视图中加载一个视图?
【发布时间】:2012-06-27 16:40:27
【问题描述】:

简而言之,我怎样才能从一个 XIB 文件中包含的一组 UIView 中加载特定的 uiview?小卖部?怎么样?

在某些情况下,我希望显示第一个视图而不是第二个,有时我希望显示第三个而不是第一个。它们都是相似的 UIView,但是只能以模态方式显示。我知道要显示哪个 UIView,具体取决于用户与单击按钮的交互。但是问题是我如何具体选择要显示的某个视图然后附加它以模态方式呈现它。

详细来说,这是我到目前为止所做的:

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

这个 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 时只加载一个特定的 UIView。我想到实现这一点的一种方法是为它们创建 IBOutlets 并管理这样显示的视图?所以我在类中创建了三个 IBOutlets,然后将它们从 Xib 的 fileown 连接到每个 UIView。这一切都很好。

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

我可以这样做:

[self.view addSubview:view2]; 

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

谁能指导我如何实现我的这个目标?

谢谢

【问题讨论】:

    标签: objective-c uiview uiviewcontroller presentmodalviewcontroller


    【解决方案1】:

    你应该给每个视图一个唯一的标签,然后使用viewWithTag:

    -编辑-

    为了使其正常工作,您可能需要执行NSNib *n = [[NSNib alloc] initWithNibNamed:bundle:]

    【讨论】:

    • 您能否进一步解释一下我如何利用从笔尖初始化到实际查看正确视图,然后使用您建议的方法实际确保正确视图出现在模态视图转换中的所有内容?
    猜你喜欢
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多