首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS Xcode 4 UINavigationController

iOS Xcode 4 UINavigationController
EN

Stack Overflow用户
提问于 2012-02-09 15:02:27
回答 2查看 1.8K关注 0票数 0

我的程序在iOS 4/Xcode3中运行良好。我最近升级到了最新版本Xcode4/iOS5。我在下面的代码行上得到了一个"SIGABRT“:

代码语言:javascript
复制
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];

这一行是在应用程序的委托中完成启动的。下面是一些示例代码:

代码语言:javascript
复制
- (void)applicationDidFinishLaunching:(UIApplication *)application {

    rootViewController = [[MyCustomViewController alloc] initWithStyle:UITableViewStylePlain];
    rootViewController.window = window;
    window.rootViewController = rootViewController;

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];

    [window addSubview:[navigationController view]];

    [window makeKeyAndVisible];
}

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-09 16:44:39

初始化window的“正常”方式是这样的:

代码语言:javascript
复制
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
window.rootViewController = [Myclass alloc] init...

你是用另一种方式做的

代码语言:javascript
复制
rootViewController.window = window;

然后

代码语言:javascript
复制
window.rootViewController = rootViewController; ???

这真的适用于旧的xcode吗?

票数 1
EN

Stack Overflow用户

发布于 2012-02-09 16:47:39

如何使用你的applicationDidFinishLaunching方法是非常奇怪的。

如果您希望将UINavigationController添加为window rootViewController,然后使用MyCustomViewController的实例初始化导航控制器,请执行以下操作:

代码语言:javascript
复制
- (void)applicationDidFinishLaunching:(UIApplication *)application {

    // code for creating a window
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    MyCustomViewController* myCustomViewController = [[[MyCustomViewController alloc] initWithStyle:UITableViewStylePlain] autorelease];

    UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:myCustomViewController] autorelease];

    self.window.rootViewController = navigationController;

    [self.window makeKeyAndVisible];
}

应用程序委托.h中的window类似于

代码语言:javascript
复制
@property (nonatomic, strong) UIWindow* window; // using ARC

代码语言:javascript
复制
@property (nonatomic, retain) UIWindow* window; // using not ARC

该属性也是在应用程序委托.m中合成的,如下所示

代码语言:javascript
复制
@synthesize window; 

一些注意事项:

当你使用window.rootViewController时,你不需要调用[window addSubView:someview]。iOS 4已经为您处理过了。

您确定您的代码可以在较旧的sdks中运行吗?

希望能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9206687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档