2014-10-06 2 views
0

Например, у меня есть 3 вида:Можно проверить segue, с какого viewcontroller что-то сделать?

  • SaveContactView (Tableview - редактируемые)
  • DetailedContactView (Вид - Показать только)
  • ListContactView (TableView - Отображение списка)

ListContactView содержит динамический отчеты Клиентов. Нажмите на ячейку, чтобы перейти к DetailContactView.

ListContactView содержит кнопку «Добавить», которая переходит в SaveContactView.

SaveContactView при сохранении пользователя перейдет в DetailedContactView.

DetailedContactView, пользователь может «изменить» и восходит к SaveContactView

Это мой вопрос:
ListContactView в DetailedContactView ИЛИ SaveContactView к DetailedContactView
На viewDidLoad на DetailedcontactView это можно назвать разные методы/функции, когда он исходит из определенного мнения?

Я не хочу создавать лишний дублированный «похожий» вид. Так есть ли лучший подход?

+0

установить свойство, такое как логическое значение, указывающее на источник – Paulw11

+0

Это контроллеры просмотра, а не виды. – duci9y

+0

Да, моя ошибка, его viewcontroller – specialone

ответ

2

Вы можете просто приложить квитанцию ​​viewDidLoad вашего DetailedContactView тем, кто является родителем этого представления. Если вы используете push segue, тогда проверьте контроллер родительского представления этого контроллера вида в UINavigationControler stack.

Если вы modally present, это DetailedContactView, то найдите [self presentingViewController] и предпримите соответствующие действия.

Или установите флаг с последней страницы, чтобы различать родителей.

Возможно, это поможет вам.

+0

Фактически, оба они в значительной степени находятся в одном стеке. Поэтому я не могу использовать этот ответ, но спасибо за вашу помощь. Сегодня я чему-то научился! – specialone

+0

@specialone Да, мой брат, очевидно, будет в одном стеке, но вы можете найти, какой из них находится над вашим объектом DetailContactView в стеке навигации и может различать. Если хотите, я могу дать вам код. И, надеюсь, я дал вам все другие варианты, которые можно различить между двумя ViewControllers. как тот, который вы приняли в ответ выше. но спасибо хотя бы вы ответили – iHulk

+0

Да, было бы признательно, если бы вы могли предоставить мне коды, чтобы я мог больше узнать о стеке навигации. Я все еще новичок в Objective-C. Спасибо за помощь. :) – specialone

0

Правильный способ - реализовать -prepareForSegue:sender: SaveContactView и ListContactView. Перенесите пункт segue в тип DetailedContactView и выполните пользовательскую настройку.

// SaveContactView 
- (void)prepareForSegue:(UIStoryboardSegue *)segue 
       sender:(id)sender 
{ 
    DetailedContactView *detailedVC = segue.sourceViewController; 
    [detailedVC setupForShowingFromSaveView]; 
} 



// ListContactView 
- (void)prepareForSegue:(UIStoryboardSegue *)segue 
       sender:(id)sender 
{ 
    DetailedContactView *detailedVC = segue.sourceViewController; 
    [detailedVC setupForShowingFromListView]; 
} 
+0

Я понимаю, что вы имеете в виду, но для setupforshowingFromList или FromSaved. Я вызываю [self getCustomer] и [self savedCustomer] в viewDidLoad в своих соответствующих диспетчерах просмотра, и их методы также находятся в их соответствующих контроллерах view. Как мне достичь вашего ответа? – specialone

+0

Если возможно, переместите этот код из viewDidLoad в 'setupForShowingFromList'. – kelin

+0

Хорошо, я попробую и дам вам знать. Благодаря! – specialone

Смежные вопросы