- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在试验如何将 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 仍然是空的!
谁能告诉我我在这里忽略了什么以及如何做到这一点?
谢谢。
更新:
首先,感谢大家的回复。然而 voromax 和 svena 的回答建议我应该删除 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/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!