我可以为一个视图创建 2 个 XIB 吗?

Posted

技术标签:

【中文标题】我可以为一个视图创建 2 个 XIB 吗?【英文标题】:Can I create 2 XIBs for one view? 【发布时间】:2013-07-29 08:31:46 【问题描述】:

基本上,我想做的是,

我想在每次点击分段控件时加载 2 个不同的 XIB 文件

是否可以加载 2 个不同的 XIB 文件?

例如:

当我点击View 1 时,我的第一个XIB 应该被加载,当我点击View 2 我的第二个XIB 应该被加载。

有可能吗?

【问题讨论】:

【参考方案1】:

你可以像下面这样使用 xib:-

添加两个UIViewUIsegmentController 并连接它的IBOutLate,如下图所示。

viewDidLoad secondView 中作为隐藏的 True 如下所示:-

- (void)viewDidLoad
   
    myview1.hidden=FALSE;
    myview2.hidden=TRUE;

    [super viewDidLoad];

放置段控件ValueChange动作并与段控件连接为ValueChange:-

-(IBAction)segmentedControlIndexChanged
    switch (seg.selectedSegmentIndex) 
        case 0:
            myview1.hidden=FALSE;
            myview2.hidden=TRUE;
            break;
        case 1:
             myview1.hidden=TRUE;
             myview2.hidden=FALSE;
            break;
               default:
            break;
    

现在运行你的项目,它看起来像:)

【讨论】:

【参考方案2】:

您可以在同一个nib/xib 文件中创建两个视图,并在单击Segemented control 时添加特定的view 一个视图在控制器类中已经有outlet,而其他视图创建一个IBOutlet 并使用。

【讨论】:

【参考方案3】:

如果我理解您的图片,我可以在同一个 xib 中看到两个视图。您要做的是从同一个 xib 加载两个不同的视图。

你需要使用 [NSBundle loadNibNamed:owner:options:] 方法来实现。

NSArray *nib =   [[NSBundle mainBundle] loadNibNamed:@"MyXIBName" owner:self options:nil];

数组 nib 将保存给定 XIB 下的所有视图。您可以迭代/过滤,然后在段控制单击时加载所需的视图。

【讨论】:

以上是关于我可以为一个视图创建 2 个 XIB 吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 UIView(.xib 和类)作为许多视图的视图基础示例吗?

我们可以将具有自动布局的 XIB 加载为以编程方式创建的没有自动布局的视图的子视图,并使用父视图调整子视图的大小吗?

我可以从实现文件创建 .xib 吗?

我可以将非 xib 应用程序转换为使用 xibs 吗?

Initwithnibname:bundle: 无法从资源包中加载带有 2 个视图控制器的 xib

XIB 约束...不断收到错位的视图