Как выбрать переменную экземпляра в отдельном UIViewController без использования перехода

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

Всякий раз, когда пользователь отмечает задачу, должен быть рассчитан процент выполненных задач и должна быть установлена ​​переменная экземпляра другого контроллера представления.

Я понимаю, что сейчас создаю экземпляр нового контроллера представления вместо того, чтобы выбрать тот, который у меня уже есть на раскадровке. Я использую стороннее боковое меню, которое находится за моим основным видом, хотя на самом деле оно существует как отдельный Scene/ViewController. Следует отметить, что это боковое меню не использует само открытие перехода. Есть ли способ выбрать другой контроллер представления и получить доступ к его переменным экземпляра?

@IBAction func checkOffTask(sender: UIButton) {

    // Select sidebar view controller
    let sidebarViewController = self.storyboard?.instantiateViewControllerWithIdentifier("sideBarScene") as! SideBarViewController

    // Calculate percentage of completed tasks
        // Select the count of all tasks
        let allTasksCount = Float(firstDataSource.count + secondDataSource.count)

        // Select the count of all completed tasks
        let completedTasksCount = Float(secondDataSource.count)

        // Divide the two to get a percentage
        var completedTaskPercentage = completedTasksCount / allTasksCount

        sidebarViewController.completedTaskPercentageTemporary = String(stringInterpolationSegment: completedTaskPercentage)

    println(sidebarViewController)
    println(sidebarViewController.completedTaskPercentageTemporary)
}

person 10000RubyPools    schedule 24.09.2015    source источник
comment
Как создается существующий sideBarScene? Может ли объект, создавший его, сохранить ссылку и предоставить ее этому коду? Если нет, рассмотрите NSNotification как способ связи между несвязанными объектами.   -  person Phillip Mills    schedule 24.09.2015
comment
sideBarScene — это просто UIViewController на раскадровке с идентификатором sideBarScene.   -  person 10000RubyPools    schedule 24.09.2015
comment
Но что-то должно вызвать инициализацию объекта в работающем приложении.   -  person Phillip Mills    schedule 24.09.2015


Ответы (1)


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

Другим способом может быть получение целевого объекта контроллера представления, когда он инициализируется раскадровкой. Для этого вам нужно будет полагаться на метод prepareForSegue:sender:. После того, как вы сохранили объект, вы можете передать его и использовать для установки свойств.

person Abhinav    schedule 24.09.2015