2010-10-07 8 views
3

У меня есть приложение на основе навигации. Корневой вид - это список элементов. В этом корневом представлении вы можете нажать на ячейку таблицы на подробное представление элемента. Или вы можете перейти к форме, чтобы создать новый элемент с помощью кнопки «Добавить» в панели навигации.iOS Перейти к другому виду

Мой вопрос в том, как я могу перейти от формы к подробному представлению после создания нового объекта?

Я не хочу нажимать подробный вид в верхней части формы, потому что я хочу, чтобы представление корневой таблицы было тем, что пользователь видит после нажатия кнопки «назад» nav, формируя подробный вид.

Я пробовал следующее. Она выскакивает на виде штраф корня, но не выталкивает вид детали после этого ..

[context save:&error]; 

[self.navigationController popToRootViewControllerAnimated:NO]; 

// display detail view 
GoalDetailViewController *detailViewController = [[GoalDetailViewController alloc] initWithNibName:@"GoalDetailViewController" bundle:nil]; 

// Pass the selected object to the new view controller. 
detailViewController.goal = goal; 

[self.navigationController pushViewController:detailViewController animated:YES]; 
[detailViewController release]; 

Любой помощи и направления было бы оценен :)

Ура!

ответ

3

Как правило, вы бы реализовали кнопку добавления с помощью контроллера вида, отображаемого модально.

[self presentModalViewController:modalViewController animated:YES]; 

Значение, которое отображается в нижней части экрана (см. Добавление контакта). Затем, когда они нажимают в верхнем правом углу, вы можете нажать контроллер подробного представления на навигационном контроллере, не оживляя его, заставив кнопку «Назад» вернуться в исходное представление списка.

+0

Ах да, это имеет гораздо больший смысл. Думаю, мне лучше уделить больше внимания руководящим принципам человеческого интерфейса. Спасибо за вашу помощь! – Fabian

1

Это не то, что вы видите слишком часто в приложениях, но это может быть достигнуто, как это:

// Get the current view controller stack. 
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:self.navigationController.viewControllers]; 

// Instantiate your new detail view controller 
GoalDetailViewController *detailViewController = [[GoalDetailViewController alloc] initWithNibName:@"GoalDetailViewController" bundle:nil]; 
detailViewController.goal = goal; 

// Remove the topmost view controller from the stack 
[viewControllers removeLastObject]; 
// Replace it with the new detail view controller 
[viewControllers addObject:detailViewController]; 

// Change the view controller stack 
[self.navigationController setViewControllers:viewControllers animated:YES]; 

// Clean up 
[detailViewController release]; 

Именно то, что анимация вы получите описано here.

+0

Спасибо за ваши отзывы :) Но похоже, что я пытался сделать это было неправильно. Модальное представление - это то, что я должен был использовать. Приветствия! – Fabian