0

我有我想用兩個目的的物品詳細視圖一個UIView:創建可模態被呈現或推送到導航堆棧

1)來創建新的項 2)編輯一個現有項目

編輯時,視圖將被推到導航堆棧上,從它的父級獲取導航欄。

在創建項目時,我想以模態方式呈現視圖,但頂部仍有一個導航欄,並帶有「完成」和「取消」按鈕。

我不希望看到有兩個導航欄的視圖,或沒有。

我該如何實施?

回答

0

爲了做到這一點我:

刪除從我的觀點的導航欄。 以模態方式啓動時,首先創建一個導航控制器,然後用我的視圖作爲根視圖以模態方式顯示導航控制器(即使我沒有計劃將其他任何東西推入堆棧)。因此,改變了這個:

StoreDetailView *storeDetailView = [[StoreDetailView alloc] initWithNibName:@"StoreDetailView" bundle:nil]; 
// ... configure the view, including setting delegate... 
[self presentViewController:storeDetailView animated:YES completion: nil]; 

這樣:

StoreDetailView *storeDetailView = [[StoreDetailView alloc] initWithNibName:@"StoreDetailView" bundle:nil]; 
// ... configure the view, including setting delegate... 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:storeDetailView]; 
[self presentViewController:navController animated:YES completion: nil]; 

然後在StoreDetailView,確定了導航欄應該是什麼樣子基礎上,委託是否被設置:

if (self.delegate == nil) { 
    self.navigationItem.rightBarButtonItem = [self editButtonItem]; 
} else { 
    [self setEditing:TRUE]; 
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done:)]; 
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel:)]; 
} 
相關問題