0

的孩子,我不知道,如果標題說明了問題本身,但在這裏它是...的UINavigationController作爲UINavigationController的

我有一個UINavigationController這是一個UINavigationController的parentViewController。事情是childViewController的行爲很奇怪,當我將它作爲一個孩子添加它時,它首先與statusBar有差距(它不佔用整個屏幕),如果我通過隱藏和顯示navigationBar來「解決」該「bug」差距消失,但現在孩子不尊重我手動設置的框架。 然後,我試圖繼續,當我提出一個模式的孩子和解僱它,整個孩子消失...

那裏會有什麼錯?與這兩個容器的父子關係還是什麼?

感謝諮詢

編輯:這裏是展示奇怪的行爲

實例項目

http://www.mediafire.com/?8saa68daqfkf335

編輯2:我找到了解決辦法其實,我並沒有找到蘋果文檔真的清楚,它說childViewControllers從它們屬於的parentViewController獲取框架,但是它並沒有說如果parentViewController「重新出現」(就像在它上面推),childViewControllers會被parentViewController框架再次調整大小...希望這有助於任何人

+0

也許你可以提供一個截圖(或兩個,...) – 2013-03-22 14:23:48

+0

好吧給我一個秒...編輯:嗯,我實際上只能發佈UINavigationController作爲孩子的差距的圖像,但其他行爲不能像這樣的截圖...讓我附上一個示例項目,顯示「bug」的東西... – 2013-03-22 14:24:11

+0

容器內的容器,我認爲這不是一個好方法,也許你需要嘗試一個自定義控制器父母導航控制器... PS chupili – D33pN16h7 2013-03-22 16:38:04

回答

0

我相信將第二個導航視圖控制器作爲模式視圖控制器會更好。 例如,對於像替換當前presentController選擇:

- (void)presentController:(id)sender { 

ChildViewController1 *cvc = [[ChildViewController1 alloc] initWithNibName:@"ChildViewController1" bundle:nil]; 
nc3 = [[UINavigationController alloc] initWithRootViewController:cvc]; 

nc3.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 

[self presentViewController:nc3 animated:YES completion:nil]; 

UIBarButtonItem *i = [[UIBarButtonItem alloc] initWithTitle:@"X" style:UIBarButtonItemStyleBordered target:self action:@selector(close)]; 
cvc.navigationItem.leftBarButtonItem = i; 
} 

然後,你的親密選擇將變成:

- (void)close { 
[nc3 dismissViewControllerAnimated:YES completion:nil]; 
} 

(雖然我建議移動按鈕的創建和處理實際上在ChildViewController1.m中關閉)。

當然,這將需要導航控制器的所有創作過ViewController.m的viewDidLoad選擇:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
self.view.backgroundColor = [UIColor blueColor]; 

UIButton *b = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
b.frame = CGRectMake(0, 100, 100, 40); 
[b setTitle:@"present" forState:UIControlStateNormal]; 
[b addTarget:self action:@selector(presentController:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:b]; 
} 

希望工程!

+0

事情是我需要childViewController始終在那裏,因爲它有一個UIPanGestureRecognizer,讓您滑動控制器到頂部呈現它... – 2013-03-22 16:23:27

+0

我同意D33pN16h7,另一個UINavigationController的rootViewController內的UINavigationController不會聽起來像是最好的方法。 也許你可以截取第二個導航控制器的截圖來呈現和使用該屏幕截圖進行滑動運動,那麼當幻燈片完成後,您可以不使用動畫呈現您的輔助導航控制器?在避免嵌套UINavigationControllers的同時,你會保持幻覺。 – Pablo 2013-03-22 18:50:24