Swift - изменить var с selectedIndex - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь перейти от ViewController1 к ViewController2, изменив selectedIndex из tabBarController.

в ViewController1:

func action() {
   _ = self.tabBarController?.selectedIndex = 4
}

ВViewController2:

class ViewController2: UIViewController {
   var isOnInfo = true
}

Моя проблема довольно проста.Я хотел бы изменить значение isOnInfo в функции action().Возможно ли это?

Еще один способ сделать это - создать глобальную переменную, но если я смогу избежать этого, будет лучше.

Спасибо за ваши ответы.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Вы можете получить объект viewcontroller по выбранному индексу в tabbarcontroller.как только вы его получите, вы можете изменить любую публичную собственность.

     func action() { 

   _ = self.tabBarController?.selectedIndex = 4

     if let vc2  = self.tabBarController?.viewControllers![4]  as?  
     ViewController2
               {

                   vc2.isOnInfo = true  
               }
    }
0 голосов
/ 12 июня 2018

Я могу порекомендовать вам переместить логику смены вкладок в контроллер панели вкладок.Создайте свой собственный класс TabBarController (подкласс UITabBarController), установите его в качестве пользовательского класса контроллера панели вкладок на storyBoard и переместите туда действие action ().

import UIKit

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    func action(isOnInfo: Bool) {
        selectedIndex = 4
        if let viewControllers = self.viewControllers,
            let viewController2 = viewControllers[selectedIndex] as? ViewController2 {
            viewController2.isOnInfo = isOnInfo
        }
    }
}

Затем в viewController1:

if let tabBarController = self.tabBarController as? TabBarController {
        tabBarController.action(isOnInfo: false)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...