当我尝试从根视图控制器中将UIViewController子类(MissionViewController)推送到UINavigationController时,仅当我在初始化视图控制器后引用基础视图时,才调用viewDidLoad方法。但是,即使调用了该方法,屏幕也不会更新。

视图控制器和导航控制器都不为零。 MissionView.xib中的文件所有者设置为MissionViewController。文件所有者的view属性指向nib视图。我已验证导航控制器的topViewController属性指向MissionViewController对象。

如果我将MissionViewController更改为根视图控制器,则视图加载正常。看到几个类似的职位,但仍然有问题。

rootViewController.h

@interface TreeGraphController : UIViewController
{
    MissionViewController *missionViewCtrlr;
}
@property(nonatomic, retain) MissionViewController *missionViewCtrlr;


rootViewController.m

#import "MissionViewController.h"
...
if (!missionViewCtrlr)
{
    MissionViewController *ctrlr = [[MissionViewController alloc] initWithNibName:@"MissionView" bundle:nil];
    ctrlr.view.hidden = NO;
    self.missionViewCtrlr = ctrlr;
    [ctrlr release];
}

myAppDelegate *del = [[UIApplication sharedApplication] delegate];
[del.navigationController pushViewController:missionViewCtrlr animated:NO];

最佳答案

那使用呢

[self.navigationController pushViewController:missionViewCtrlr];


rootViewController中?我假设rootViewController已被推送到UINavigationController,并且导航控制器的视图已添加为应用程序委托中self.window的子视图?

顺便说一句,您可以仅通过说一下来简化部分代码

if(!missionViewCtrlr)
  self.missionViewCtrlr = [[MisionViewController alloc] init...];

关于ios - pushViewController推送但没有 View 更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7972995/

10-12 00:15