#ios #cocoa #swift
#iOS #cocoa #swift
Вопрос:
Я работаю над проектом игры для подбора карт из Стэнфордского курса iOS по Swift. У меня есть два ViewController на панели вкладок для двух разных типов карточных игр, которые выводятся в один и тот же вид, который показывает историю перемещений. Я хочу отдельные истории перемещений для каждой игры, поэтому создал отдельный экземпляр HistoryViewController в каждом из ViewController 2 игровых типов. Затем я манипулирую этими экземплярами по мере выполнения перемещений. Как мне сообщить Xcode использовать этот конкретный экземпляр HistoryViewController при переходе от соответствующего родительского элемента? Например, если я участвую в 1-й карточной игре и нажимаю «История», в представлении истории должен отображаться HistoryViewController, инициализированный в коде card game 1.
Я прикрепил изображение раскадровки. Любая помощь была бы высоко оценена 🙂
Ответ №1:
Вы можете запустить контроллер просмотра истории с обоих контроллеров просмотра.Поскольку они оба создадут другой экземпляр контроллера просмотра истории.Поскольку оба segue
отличаются друг от друга, вы можете присвоить им разные имена и выполнить self.performSegueWithIdentifier("push1", sender: self)
и self.performSegueWithIdentifier("push2", sender: self)
или напрямую нажать.
Вы можете создать label
или textview
для истории и передать информацию, которую вы хотите отобразить в
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "push1") {
let viewController:ViewController = segue!.destinationViewController as ViewController
// pass data to next view
viewController.label = @"history for 1st view controller"
}
else if (segue.identifier == "someanothersegue") {
//Perform some another task for any other segue
}
}
Таким образом, вы можете передавать данные целевому контроллеру просмотра, который в вашем случае является контроллером просмотра истории.
Комментарии:
1. Спасибо за помощь, поскольку prepareForSegue находится в родительском VC, оператор if не нужен, вместо этого я просто получаю целевой VC и изменяю его свойство. Было бы неплохо, если бы можно было изменить конечный VC на конкретный экземпляр VC, но это работает. Спасибо 🙂