2015-09-24 2 views
0

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

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

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

@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) 
} 
+0

Как создается существующая «sideBarScene»? Может ли созданный объект сохранить ссылку и предоставить ее этому коду? Если нет, рассмотрите NSNotification как способ связи между несвязанными объектами. –

+0

sideBarScene - это просто UIViewController на раскадровке с идентификатором «sideBarScene». – 10000RubyPools

+0

Но что-то должно заставить объект быть инициализированным в запущенном приложении. –

ответ

0

Один трюк может найти текущий видимый контроллер и установить на нем свойства. This thread может помочь вам в этом.

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

Смежные вопросы