2017-08-10 86 views
0

我有UITabBarController。从首页标签,我seged到ThankYouVCSwift 3:UITabBarController更改标签展开

当我从ThankYouVC放松时,我想更改选定的选项卡。

我已经试过:

HomeVC

@IBAction func unwindToMain(segue:UIStoryboardSegue) { 
    print("unwind") 
    self.tabBarController?.selectedIndex = 0 
} 

控制台日志打印开卷,但不改变指数

的另一种尝试:

enum Notifications: String, NotificationName { 
    case QRDoneNotification 
} 

override func viewDidLoad() { 
super.viewDidLoad() 
NotificationCenter.default.addObserver(self, selector: #selector(unwindCallBack), name: Notification.Name("QRDoneNotification"), object: nil) 
} 

@IBAction func unwindToMain(segue:UIStoryboardSegue) { 
    print("unwind") 
    NotificationCenter.default.post(name: Notifications.QRDoneNotification.name, object: nil) 
} 

func unwindCallBack() { 
    self.tabBarController?.selectedIndex = 0 
} 

仍然没有运气!

帮帮我。

+0

你怎么接近你的'ThankYouVC'?这是一种模式“现在”的赛格吗?您的TabBarController是否位于NavigationController中,并且您正在将TabBar推向'ThankYouVC'? – DonMag

+0

我认为你的self.tabBarController是零,这就是你的问题的原因。检查这个 –

+0

@DonMag我使用Show(例如Push)segue继续致谢ThankYouVC。不,TabBar不在导航控制器内。 –

回答

2

问题是,一个unwind segue展开到保存该功能的视图控制器。所以这就是你最终的目标。

一个解决方案:子类UITabBarController并把你放松在那里。

class MyTabBarController: UITabBarController { 

    @IBAction func unwindToMain(segue:UIStoryboardSegue) { 
     print("Unwinding from custom tab bar controller...") 
     selectedIndex = 1 
    } 

} 

所以,那类添加到您的项目......将您目前的UITabBarController的自定义类来MyTabBarController ......将您的退出/ SEGUE放松对这个新的,不要忘记删除现有的unwindToMain()函数和展开连接。