2016-01-10 2 views
0

Моя проблема в том, что у меня есть два контроллера представления, и мне нужно перенести строку с одного контроллера представления на другой. У меня уже есть это от снегом. Фактическая проблема заключается в том, что мне нужен ярлык для изменения в следующем контроллере представления, чтобы он соответствовал текущему титузу кнопки в предыдущем представлении. И да, есть несколько кнопок.Проблема: Перенос контроллеров просмотра через segue в зависимости от того, какая кнопка нажата

Мой код из поля зрения 1 заключается в следующем:

@IBAction func whichButtonWasClicked(sender: AnyObject) { 
    clickedButton = sender.currentTitle!! 
} 

// Segue - Pass the Data of which lesson was chosen 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    let DestViewController : Lesson = segue.destinationViewController as! Lesson 
    DestViewController.lessonPlan = clickedButton 
} 

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

print(lessonPlan) 

Это не дает мне название кнопки от действия, потому что я предполагаю, что действие после Segue. И да, я протестировал его, и это после сеге. Так оно и работает, это просто немного отложено, и мне нужно, чтобы он был частью segue.

+0

Вы можете вызвать метод executeSegue, в которомButtonClicked после необходимых настроек. Просто измените segue в раскадровке, чтобы не было связано с кнопкой –

ответ

3

Поскольку ваш IBAction вызывается после prepareForSegue, вы можете использовать программные сегменты.

Прямо сейчас, вы, вероятно, перетаскиваете переход от вашей кнопки к следующему контроллеру. Вместо этого вы можете перетащить сегмент из текущего контроллера представления в следующий (см. this answer для визуального руководства). Это создаст программный сегмент, который вы можете активировать, когда захотите из кода. Не забудьте указать segue идентификатор в Xcode.

Затем в whichButtonWasClicked позвоните по номеру self.performSegueWithIdentifier("identifier you setin Xcode", sender: sender) после того, как вы установили clickedButton, чтобы вызвать сег. Поступая таким образом, вы убедитесь, что действие кнопки вызывается до начала сеанса.

+0

Это хорошее решение проблемы OPs (проголосовало) –

+0

Большое вам спасибо! Я попробовал, и он отлично поработал. –