2014-12-31 102 views
1

我是新來的swift和IOS開發。我正在製作選項卡式應用程序(3個視圖)。例如,FirstView,SecondView和ThirdView。 FirstView有一個打開addNewSession視圖的按鈕,addNewSession視圖有一個返回FirstView的Back按鈕。問題是從addNewSession視圖返回後Tab鍵消失Swift:點擊後退按鈕後錯過標籤欄

FirstView to addNewSession視圖。

@IBAction func toAddNew(sender: AnyObject) { 
      let addNewSession = self.storyboard?.instantiateViewControllerWithIdentifier("addNewSession") as addNew 
      self.presentViewController(addNewSession, animated: true, completion: nil) 
     } 

addNewSession視圖的firstView

@IBAction func backToPrev(sender: AnyObject) { 
     println("test1") 
     let FirstView = self.storyboard?.instantiateViewControllerWithIdentifier("FirstView") as FirstViewController 
     self.presentViewController(FirstView, animated: true, completion: nil) 
    } 

回答

1

問題是你backToPrev方法實例化一個新FirstViewController,這是不是你來自同一個實例。你不是真的回到原來的那個,你正在展示一個新的。這不是你想要的。

這樣做的正確方法是將FirstViewController嵌入到導航控制器中,然後將addNew控制器放到它上面。當你使用導航控制器時,你可以免費獲得Back行爲。

希望你正在使用故事板?選擇你的FirstViewController,進入編輯器菜單並選擇導航控制器中的嵌入。

在您的toAddNew中,而不是presentViewController使用self.navigationController.pushViewController來推送您的addNew控制器。

有一個更簡單的方法來使用segues來完成最後一步。您可以控制Storyboard中從FirstViewController中的按鈕拖動到addNew控制器,並創建一個Show segue。這會在按鈕被觸摸時自動顯示你的addNew控制器。採用這種方法,您將需要刪除您的toAddNew IBAction和連接,因爲它是多餘的。