在loggerViewController.m:遞歸調用viewDidLoad中,轟然
- (void)viewDidLoad
{
[super viewDidLoad];
UIView* mainView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
[self.view addSubview:mainView]; // <-- Problem is here
}
loggingViewController是我的appDelegate的伊娃
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
.
.
loggingViewController = [[loggerViewController alloc] init];
[loggingViewController.view setBackgroundColor:[UIColor blueColor]];
// [loggingViewController loadView];
[self.view addSubview:loggingViewController.view];
}
我期待我的AppDelegate調用loggingViewController,反過來,在裏面設置它自己的子視圖,這將完成。但相反,viewDidLoad被遞歸調用,我不明白爲什麼?
遞歸調用的原因是你的'self.view'是'nil',因此它試圖一次又一次地調用。你是否在你的loadView方法中做了其他的事情?如果你只是註釋'[loggingViewController.view setBackgroundColor:[UIColor blueColor]];',是否發生? – iDev
是的,我現在注意到AppDelegate的視圖從未初始化。但是當我像'loggingViewController.view = [[UIView alloc] initWithFrame:rect]一樣初始化它時,''viewDidLoad'永遠不會被調用! – Ted
爲什麼從未初始化?你能找到什麼特殊原因?你不應該'loggingViewController.view = [[UIView alloc] initWithFrame:rect];'這會產生更多的問題。 – iDev