我可以为一个视图创建 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:-
添加两个UIView
或UIsegmentController
并连接它的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 加载为以编程方式创建的没有自动布局的视图的子视图,并使用父视图调整子视图的大小吗?