0
我有我想用兩個目的的物品詳細視圖一個UIView:創建可模態被呈現或推送到導航堆棧
1)來創建新的項 2)編輯一個現有項目
編輯時,視圖將被推到導航堆棧上,從它的父級獲取導航欄。
在創建項目時,我想以模態方式呈現視圖,但頂部仍有一個導航欄,並帶有「完成」和「取消」按鈕。
我不希望看到有兩個導航欄的視圖,或沒有。
我該如何實施?
我有我想用兩個目的的物品詳細視圖一個UIView:創建可模態被呈現或推送到導航堆棧
1)來創建新的項 2)編輯一個現有項目
編輯時,視圖將被推到導航堆棧上,從它的父級獲取導航欄。
在創建項目時,我想以模態方式呈現視圖,但頂部仍有一個導航欄,並帶有「完成」和「取消」按鈕。
我不希望看到有兩個導航欄的視圖,或沒有。
我該如何實施?
爲了做到這一點我:
刪除從我的觀點的導航欄。 以模態方式啓動時,首先創建一個導航控制器,然後用我的視圖作爲根視圖以模態方式顯示導航控制器(即使我沒有計劃將其他任何東西推入堆棧)。因此,改變了這個:
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:)];
}