2017-08-10 84 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()函數和展開連接。