gpt4 book ai didi

ios - 在 UIViewController 中加载一个 nib 文件

转载 作者:可可西里 更新时间:2023-11-01 03:40:03 25 4
gpt4 key购买 nike

我正在试验如何将 nib 文件加载到 UIViewController

我创建了一个单独的 nib 文件,名为 Email。首先我注意到加载 View Controller 时,initWithNibName 方法没有被调用。所以我像这样从 viewDidLoad 方法手动调用它,

[self initWithNibName:@"Email" bundle:[NSBundle mainBundle]];

它没有用。我还收到一条警告,说 Expression result unused

然后我在互联网上搜索并找到了this文章并实现了 loadView 方法,如下所述,

- (void)loadView
{
[super loadView];

UINib *nib = [UINib nibWithNibName:@"Email" bundle:nil];
[nib instantiateWithOwner:self options:nil];
}

方法被调用但 View Controller 仍然是空的!

谁能告诉我我在这里忽略了什么以及如何做到这一点?

谢谢。

更新:

首先,感谢大家的回复。然而 voromaxsvena 的回答建议我应该删除 segues 并自动加载 nibs,我不是很喜欢。 Anil 的答案很有效,现在我还有最后一个障碍要跨越。

我有多个 nib 文件。根据用户的选择,它应该加载特定的 Nib 。所以我尝试的是,像这样将所有 Nib 放入数组中,

- (void)loadView
{
[super loadView];

NSArray *nibs = [[NSArray alloc] initWithObjects:
[[NSBundle mainBundle] loadNibNamed:@"Facsimile" owner:self options:nil],
[[NSBundle mainBundle] loadNibNamed:@"Email" owner:self options:nil],
[[NSBundle mainBundle] loadNibNamed:@"Memorandum" owner:self options:nil],
[[NSBundle mainBundle] loadNibNamed:@"ProjectMemo" owner:self options:nil], nil];


self.view = [nibs objectAtIndex:0];
}

并像这样使用它的索引访问它 self.view = [nibs objectAtIndex:1];。但它会抛出错误*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[__NSArrayM _setViewDelegate:]:无法识别的选择器发送到实例0xd56fd20'*

为什么会出现这个错误?如果不可能,我愿意接受建议。

再次感谢。抱歉有点拖延。

最佳答案

使用下面的代码从 nib 加载一个 View 并用作 View Controller 的 View

- (void)loadView
{
[super loadView];

NSArray *nib =[[NSBundle mainBundle]loadNibNamed:@"test" owner:self options:nil];
self.view = [nib objectAtIndex:0];
}

编辑

根据用户选择加载单个 Nib 。查看加载单个 Nib

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

将返回一个对象数组。从您更新的问题中,我可以看到您正在将这些数组存储到另一个数组中。现在你的 nib 数组是一个“数组”对象的数组。

 self.view = [[nibs objectAtIndex:0]objectAtIndex:0]; 

会起作用。

但不好,根据用户选择加载单个nib

关于ios - 在 UIViewController 中加载一个 nib 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15828344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com