Я склонен создавать SEGUE из самого контроллера представления.
Вы бы затем создать IBAction для кнопки на контроллере представления, и есть вызов действия [self performSegueWithIdentifier:@"identifier"];
Это более или менее точно, что создает переход от кнопки делает. Если это 100% все, что вам нужно сделать, это вполне приемлемо. Но это более удобное решение, так как оно позволяет вам легко добавлять дополнительные функции к кнопкам. Например, ваша кнопка требует, чтобы вы сохранили объект на сервере. Вы хотите сохранить этот объект перед тем, как отойти от страницы, чтобы вы поместили вызов performSegueWithIdentifier
в блок завершения сохранения.
Кроме того, создание segue из раскадровки с идентификатором позволяет использовать этот сегмент для нескольких кнопок. Например, скажем, у вас есть контроллер вида с 4 кнопками, которые все идут на страницу информации, относящуюся к этой кнопке. Вам нужен только один «goToInfo» segue на вашем раскадровке, но вы можете настроить 4 отдельных IBActions для тех кнопок, которые выполняют разные настройки, а затем подготовить контроллер просмотра на основе данных, настроенных в IBActions для кнопок. Это будет держать ваш раскадровки немного более чистым, потому что вместо того, чтобы потребоваться 4 разных segues, которые все видны на SB, у вас есть только 1.
tl; dr - создание segue с кнопки прекрасно, пока это 100% единственное, что вам нужно сделать, когда нажимаете кнопку. Если в фоновом режиме есть что-то еще, было бы лучше создать segue из VC и вызвать его через свой идентификатор после выполнения дополнительных шагов.
Редактировать - Я полагаю, что я немного ввел вас в заблуждение. Единственное, что вы можете сделать, это переопределить метод -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
. Вы устанавливаете проверку if/else if chain, чтобы убедиться, что segue.identifier равен строкам, которым вы устанавливаете идентификатор, и вы можете выполнять различную логику в тех блоках, которые будут вызваны, даже если вы присоедините segue непосредственно к кнопке , Единственная проблема заключается в том, что это функция void, и после этого segue будет выполняться независимо от любых проблем, которые могут возникнуть с данными, введенными на странице.
Теперь я обычно переопределяю этот метод, чтобы передавать данные между VC. Здесь вы должны установить свойства segue.destinationViewController
, после того, как вы внесете его в класс ViewController, который, как вы знаете. Я бы не стал вводить здесь какую-либо тяжелую лифтинговую логику, и, разумеется, сервер не называет.Это те случаи, когда вы обязательно захотите настроить IBAction с помощью кнопки, которая выполняет логический/серверный вызов, и звонит performSegue
, когда вы закончите, и знаете, что все работает правильно.
Здравствуйте, вы должны уточнить свой вопрос. Кроме того, вы задаете несколько вопросов в одном, лучше быть конкретным для одного вопроса и дать подробности об этом, чтобы люди могли получать больше информации, чтобы помочь вам. –
Спасибо @MagoNicolasPalacios Я постараюсь быть более конкретным – Eduardo