最近,做項目的時候遇到的,就是present 一個viewController 後,想在這個頁面上pushviewcontroller 另一個頁面,發現沒有任何網頁,遍搜所有國內的博客,都沒發現有類似的問題,搜stackhack ,發現有類似的問題,經過本人的實驗,終於解決了。現把解決方案貼在這裏,以便於整理和學習。
遇到這樣的問題,貌似需要先把原先的viewcontroller dissmiss 掉,然後才能用push 的方法推出新的頁面。啥都不說先貼代碼
1. 在present 一個viewController 前的那個頁面
notiView= [[[NotifyViewController alloc]initWithNibName:@"NotifyViewController" bundle:nil]autorelease];
// MainViewController *mainController =[MainViewController alloc] ini;
notiView.delegate=(id)self;
[self presentModalViewController:notiView animated:YES];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
sleep(1);
dispatch_async(dispatch_get_main_queue(), ^{
[self dismissModalViewControllerAnimated:NO];
[self.navigationController pushViewController:notiView animated:NO];
});
});
在該頁面實現delegate
- (void)didDissmissSearchViewController
{
[self presentModalViewController:notiView animated:NO];
[self dismissModalViewControllerAnimated:YES];
}
//2.在該viewcontroller關閉該頁面的時候調用的,並且在該頁面聲明delegate
// [self dismissModalViewControllerAnimated:YES]; if (self.navigationController != nil) { if ([delegate respondsToSelector:@selector(didDissmissSearchViewController)]) { [self.navigationController popViewControllerAnimated:NO]; [delegate didDissmissSearchViewController]; } else { [self.navigationController popViewControllerAnimated:NO]; } }