ios - UIviewController 不触发自己的委托(delegate)类

标签 ios view viewcontroller

我不是 Interface Builder 的普通用户。我正在尝试使用 xib 创建一个新的 UIViewController 类。假设我正在创建一个名为 myViewController 的 Controller 当我创建它时,XCode 会创建 3 个文件,myViewController.hmyViewController.mmyViewController.xibxib 只包含一个 View 。它不应该包含一个 viewController 吗?

无论如何,我只用 init 初始化那个 View Controller (是的,我试过用 initWithNibName),问题是它自己的委托(delegate)方法,比如 viewDidAppearviewDidLoad 不会在其自己的类上触发。

它不应该在 myViewController.xibmyViewController.m 之间有一个委托(delegate)链接吗?怎么了?

最佳答案

xib 的“文件所有者”是您的 View Controller 。如果在选择“文件所有者”时检查身份检查器,您会看到其自定义类应设置为 myViewController

“文件的所有者”也是您连接 View Controller 的 IBOutletIBAction 的对象。

当您想以编程方式创建 View Controller 的实例时,可以使用此方法:

-[UIViewController initWithNibName:bundle:]

您可以像这样将 xib 文件的名称传递给该方法:

[[myViewController alloc] initWithNibName:@"myViewController"bundle:nil]

... 或者,如果您改为传入 nil,它将默认使用文件名与您的类名相匹配的 xib:

[[myViewController alloc] initWithNibName:nil bundle:nil]

如果您想使用另一个 xib 文件,并且其“文件所有者”类也设置为 myViewController,您可以传递该 xib 文件名:

[[myViewController alloc] initWithNibName:@"YourOtherXibFileName"bundle:nil]

关于ios - UIviewController 不触发自己的委托(delegate)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099329/

相关文章:

ios - 如何从自定义 UIView 调用 UIViewController 中的方法/ Action ?

iphone - 区分applicationDidEnterBackground和applicationWillTerminate

iphone - Xcode SDK IOS 4.2 安装并在build设置中缺少 iOS 4.1

ios - 当我添加到字典后从数组中删除值时。数组值从 iOS 中的字典中删除?

ios - 以编程方式在 ios 中创建水平滑动 View Controller 转换

iOS:如何将滑动删除按钮添加到 viewForHeaderInSection 中的自定义 View

iphone - 在一个 View Controller 和 UAModalPanel 之间保留 View

c# - ASP.NET MVC 和 C# : pass a viewmodel to controller

swift - 以编程方式快速呈现新的 View Controller /以编程方式为类提供标识符

swift - 过滤 View Controller