从另一个 XIB (iPhone) 的视图控制器加载 XIB

Posted

技术标签:

【中文标题】从另一个 XIB (iPhone) 的视图控制器加载 XIB【英文标题】:Load an XIB from a view controller of another XIB (iPhone) 【发布时间】:2011-08-19 02:07:00 【问题描述】:

这是我的第一篇文章,我对这些东西还很陌生,但这是我的问题,希望你能提供帮助:)

所以我制作了一个游戏画面,现在想在开头添加一个主菜单。所以我添加了一个新的视图控制器子类,现在有一个 IBAction,它来自一个将加载游戏屏幕的按钮。

#import <UIKit/UIKit.h>


@interface MainMenuViewController : UIViewController
  IBOutlet  UIButton *classicMode;
  IBOutlet  UIButton *timedMode;
    

@property (nonatomic, retain) IBOutlet UIButton *classicMode; 
@property (nonatomic, retain) IBOutlet UIButton *timedMode; 



- (IBAction) classicModeButton:(id) sender;
- (IBAction) timedModeButton:(id) sender;
@end

所以现在我进入我的 .m 并设置 IBAction

- (IBAction) classicModeButton:(id)sender


 

但是我尝试使用 initWithNibName 并指定我的其他视图控制器 xib,它运行时没有错误,但是当我点击我在 IB 中链接的按钮时,它总是崩溃并说它收到了信号 SIGABRT。任何帮助将不胜感激。 :)

【问题讨论】:

你能发布你的 initWithNibName 方法吗? 可能,view 是您的UIViewController 中的nil。请检查this answer,它可能会帮助你。 【参考方案1】:

您可能遇到了this 帖子中描述的问题。您需要将控制器设置为 self.window.rootViewController 而不是将其添加为应用程序委托代码中 self.window 的子视图。

【讨论】:

【参考方案2】:

您需要发布更多代码,但您很可能需要创建一个导航控制器来将视图控制器推送到上面。导航控制器管理视图的转换,因此有必要执行从一个视图到另一个视图的切换。

【讨论】:

以上是关于从另一个 XIB (iPhone) 的视图控制器加载 XIB的主要内容,如果未能解决你的问题,请参考以下文章

如果未采用 xib,如何使视图控制器与 iphone 5 兼容

将 Storyboard 和 xib 用于同一个视图控制器?

从 xib 加载视图控制器返回错误的帧

将xib放在UIView控件iphone中

iPhone Xcode - 第二个xib视图上的导航控制器?

iphone导航控制器和表格视图