Подключение экземпляра пользовательского ViewController к представлению

#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, но это работает. Спасибо 🙂