0

У меня есть подробный пункт, который я хотел бы использовать для двух целей:Создание UIView, который может быть представлен модален или в стек навигации

1), чтобы создать новый элемент 2) для редактирования существующий пункт

При редактировании представление будет перенесено в стек навигации, получив навигационную панель от родителя.

При создании объекта, я хочу представить вид по-разному, но все еще есть панель навигации вверху, с кнопками «Готово» и «Отмена».

То, что я не хочу, - это когда-либо видеть представление с двумя навигационными барами, или нет.

Как бы это реализовать?

ответ

0

Для того, чтобы выполнить эту I:

Удалены панель навигации с моей точки зрения. При запуске модально сначала был создан навигационный контроллер, а затем отобразился навигационный контроллер с моим представлением в виде корневого представления (хотя я не планировал нажимать что-либо еще на стек). Так изменилась следующим образом:

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:)]; 
}