2011-10-04 63 views
1

是否嘗試過這個網站,我只是不明白我的模式視圖東西上所有的例子,我也看到了導航欄雖然,但其空無法在右邊或左邊欄按鈕項目添加到我的導航控制器

EditEntityViewController *editEntityViewController = [[EditEntityViewController alloc] init]; 
editEntityViewController.currentNode = newNode; 
editEntityViewController.delegate = self; 

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:editEntityViewController]; 
navController.modalPresentationStyle = UIModalPresentationFormSheet; 
navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 


UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" 
                    style:UIBarButtonItemStylePlain 
                   target:self 
                   action:@selector(refreshPropertyList:)];   
editEntityViewController.navigationItem.rightBarButtonItem = anotherButton; 
[anotherButton release]; 


[self presentModalViewController:navController animated:YES]; 

[editEntityViewController release]; 
+0

在模態視圖中使用導航控制器有點奇怪。你有沒有嘗試在你的editEntityViewController中使用UINavigationBar,而是將你的按鈕添加到該按鈕? – onnoweb

+0

是的,但它不會產生與我想要做的相同的效果 – TheLearner

+0

在模態視圖中使用導航控制器並不奇怪。這是將導航欄添加到模態表的標準方式。 TheLearner正在做的是完全可以接受的,我不明白爲什麼它不起作用。 –

回答

0

正如所討論的,您的代碼是正確的,並且是顯示帶有UINavigationBar的彈出式表單以保存按鈕以關閉表單的標準方式。但是,您在EditViewController中定義了名爲navigationItem的IBOutlet,這導致了衝突。

-1

導航控制器上呈現的視圖控制器沒有navigationItem,也沒有navigationController屬性。但是,它們具有parentViewController屬性,但這與您的情況無關。

如果要在模態顯示視圖上自定義導航欄,您應該將管理該視圖的視圖控制器中的IBOutlet連接到置於該管理視圖中的導航欄。然後通過IBOutlet實例變量進行操作。

+0

你能否請你重述一下我的句子我不明白你 – TheLearner

+0

好吧,我讀了幾遍後明白了。你基本上說的是我不能使用導航控制器:) – TheLearner

+0

你可以使用導航控制器,但導航欄不會與所述導航控制器提供的導航項綁定。 – Eimantas

0

嘗試在editEntityViewController上設置rightBarButtonItem 之前您使用initWithRootViewController創建UINavigationController :.

我認爲在創建UINavigationController時設置了導航欄。在創建時間後添加正確的條形項目爲時已晚。

編輯:好的,所以這不是問題。

以下最低代碼片段的作品,所以我會檢查你的EditEntityViewController是否做一些其他地方刪除按鈕:

- (IBAction)showPopup:(id)sender 
{ 
    UIViewController *popupController = [[UIViewController alloc] init]; 

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:popupController]; 
    navController.modalPresentationStyle = UIModalPresentationFormSheet; 
    navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 


    UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" 
                     style:UIBarButtonItemStylePlain 
                    target:self 
                    action:nil];  

    popupController.navigationItem.rightBarButtonItem = anotherButton; 
    [anotherButton release]; 

    [self presentModalViewController:navController animated:YES]; 

    [popupController release]; 
} 
+0

這不起作用。我也認爲這是完全正常的。我想要做的是顯示模式,然後在選擇不同的東西時推送視圖ontop – TheLearner

+0

好的 - 請參閱上面的最小代碼示例。其他地方的某個東西導致了這個問題。你發佈的代碼應該可以工作。 –

+0

看到我的答案,隨時回答這個問題 – TheLearner

0

爲什麼這是不工作的原因是非常愚蠢的。基本上我有一個在EditViewController中定義的名爲navigationItem的IBOutlet,它與SDK的屬性有相同的名稱衝突。

我刪除它和從筆尖的鏈接,因爲羅賓說,它完美的作品。

+0

Ooops,你生活和學習! –

相關問題