1

我对以下代码有疑问:

MyViewController *aController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
self.myController = aController;
myController.title = @"List";

[aController release];


UINavigationController *bController = [[UINavigationController alloc] initWithRootViewController:myController];
self.rootNavController = bController;

[bController release];

[self.view addSubview:rootNavController.view];

当我运行我的程序时,我遇到了一个问题,我的 myController 视图沿 y 轴一直重复,直到屏幕底部。如果我将 myController.view 添加到根视图,它可以正常工作。只有当我将 myController 添加为导航控制器的 rootViewController 时,我才会遇到问题。

提前感谢您的帮助!

4

3 回答 3

1

默认导航控制器项目模板以这种方式定义 -applicationDidFinishLaunching:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // Override point for customization after app launch    

    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];
}

我意识到您正在使用 alloc init 实例化您的导航控制器,而不是从 XIB 中获取它,但是,您似乎应该将其添加到窗口的视图树中。

您显示的代码是从哪里调用的?

于 2009-08-15T05:18:26.623 回答
1

问题是我没有指定框架。如果没有使用 CGRectMake 指定框架,视图控制器只是填充了整个空间。

我需要的行是这样的:

rootNavController.view.frame = CGRectMake(0, 0, 320, 431);
于 2010-02-04T16:32:56.173 回答
0

试试这个:

MyViewController *aController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
self.myController = aController;
[aController release];


UINavigationController *bController = [[UINavigationController alloc] initWithRootViewController:myController];
self.rootNavController = bController;
[bController release];

[window addSubview:rootNavController.view];//<--What are you adding the navigationController to??? Another ViewController? TabController? or Window?

然后在 MyViewController 的 -(void)viewDidLoad 方法中你可以放

self.navigationItem.title = @"List";
于 2009-08-15T08:44:06.600 回答