gpt4 book ai didi

ios - 子类化自定义 UIViewController(使用 xib)以添加其他行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:22 25 4
gpt4 key购买 nike

这是交易:我正在使用 DEFacebookComposeViewController这是 UIViewController 的自定义子类。该子类使用 xib 来设置用户界面。

现在我想向 DEFFacebookComposeViewController 添加一些额外的 GUI 元素,所以我想我会创建一个名为 MySubclassDEFacebookComposeViewController : DEFFacebookComposeViewController 的子类并创建一个 xib。

但是 xib MySubclassDEFacebookComposeViewController.xib 没有显示 DEFFacebookComposeViewController.xib 中的任何 GUI 元素,我认为它会这样做,因为它是该类的子类。

所以基本上我只是想知道将新元素添加到子类 UIViewControllerxib 的正确方法是什么?

最佳答案

复制 DEFacebookComposeViewController.xib 并将其重命名为 MySubclassDEFacebookComposeViewController.xib 并根据您的喜好进行编辑。

创建时,UIViewController 默认会查找同名的 nib/xib(即使末尾没有 Controller 部分)

来自 UIViewController 的文档:

If you use a nib file to store your view controller’s view, it is recommended that you specify that nib file explicitly when initializing your view controller. However, if you do not specify a nib name, and do not override the loadView method in your custom subclass, the view controller searches for a nib file using other means. Specifically, it looks for a nib file with an appropriate name (without the .nib extension) and loads that nib file whenever its view is requested. Specifically, it looks (in order) for a nib file with one of the following names:

If the view controller class name ends with the word “Controller”, as in MyViewController, it looks for a nib file whose name matches the class name without the word “Controller”, as in MyView.nib. It looks for a nib file whose name matches the name of the view controller class. For example, if the class name is MyViewController, it looks for a MyViewController.nib file.

因此您需要指定要使用的 Nib 或以 View Controller 命名。由于您想添加/修改旧 Nib ,因此需要它的副本。

这是假设 DEFacebookComposeViewController.xib 默认没有任何 IBOutlets。如果有,您可以在 viewDidLoad 中修改现有的 Nib 。无论是否有 IBOutlets,加载 View 后总是可以添加更多 subview 。

关于ios - 子类化自定义 UIViewController(使用 xib)以添加其他行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16236968/

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