2014-11-16 3 views
0

У меня есть два контроллера вида «SortViewController» и «CatalogeViewController». У меня есть кнопка «SortViewController» 6, которая связана с push segue на «CatalogeViewController» , как я могу узнать, из какой из кнопок пользователь пришел? Я установил идентификатор для segue, и я подумал о том, чтобы подготовиться к segue и отправить строковую переменную в «CatalogeViewController», пока пользователь нажимает кнопку и проверяет, является ли она той же строкой в ​​«CatalogeViewController». Есть ли другой способ сделать это? и, пожалуйста, кто-нибудь может объяснить мне, как сделать preapre для segue со строковой переменной в соответствии с моим вопросом. ThanksОбнаружив, какая кнопка нажата на предыдущем контроллере представления

ответ

2

ответ Bouabane был бы работа, но для каждой кнопки потребуется создать отдельный сегмент, который изначально будет намного более трудоемким, сложнее поддерживать и загромождает вашу раскадровку множеством segue-соединений.

Поскольку все ваши кнопки ссылаются на один и тот же пункт назначения, я бы сделал это по-другому.

Создайте segue вручную, перетащив управление с вашего первого VC (ViewController) на второй VC. Дайте ему уникальный идентификатор типа «ButtonSegue»

Затем создайте IBAction для всех ваших кнопок. Свяжите все свои кнопки с тем же действием.

Дайте каждой кнопке уникальный номер тега. Используйте последовательный диапазон чисел (например, 101, 102 ... 106).

В методе IBAction сохраните номер тега кнопки в переменной экземпляра.

В вашей подготовкеForSegue передайте переменную экземпляра номера тега в пункт назначения VC. (Код, соответствующий номеру, быстрее и проще, чем код для соответствия строкам. С номерами вы можете использовать оператор switch.)

Чтобы сделать код более понятным и понятным, я бы определил перечисление typedef'd с возможными значениями тегов, затем введите переменную экземпляра номера тега источника исходного кода, и этот тип номера тега контроллера точки назначения использует этот тип.

0

Вы должны использовать этот метод.

- (Недействительными) prepareForSegue: (UIStoryboardSegue *) переход отправителя (идентификатор) отправитель

Это пример того, как вы можете выполнить ваши потребности:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

CatalogeViewController *catalogeViewController = segue.destinationViewController;; 
if([segue.identifier isEqualToString:@"firtsSegue"]) 
{ 
    catalogeViewController.selectedButton = @"firstButton"; 
}else if([segue.identifier isEqualToString:@"secondSegue"]){ 
    catalogeViewController.selectedButton = @"secondButton"; 
}else 
. 
. 
. 
} 
Смежные вопросы