2017-09-04 167 views
2

非常簡單的情況下,有很多這個帖子,但我仍然堅持。我有一個嵌入在UINavigationController中的UITableView最終UIViewController應該在選擇UITableViewCell時顯示。當我將所有這些連接起來時,行選擇上沒有任何反應。UINavigationController沒有後退按鈕

我可以得到詳細視圖,由我們的didSelectRowAtIndexPath呈現,並通過它的id引用segue。但是,當我這樣做時沒有後退按鈕。

enter image description here

enter image description here 類MainViewController:UIViewController的,的UITableViewDelegate,UITableViewDataSource {

@IBOutlet weak var tableview: UITableView! 
    var configJson: JSON = [] 
    var config: [Tab] = [] 

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

    func parseConfig() { 
     let configParser = ConfigParser(configJson: configJson) 
     config = configParser.parse() 
    } 

    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return self.config.count 
    } 

    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let tab = self.config[indexPath.row] 

     let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell") 

     cell.textLabel?.text = tab.title 

     return cell 
    } 

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     performSegue(withIdentifier: "contentSegue", sender: self) 
    } 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

     if (segue.identifier == "contentSegue") { 
      let nextVC = segue.destination as? ContentViewController 
      let indexPath = self.tableview.indexPathForSelectedRow 
      let tab = self.config[(indexPath?.row)!] 
      nextVC?.tab = tab 
     } 
    } 
} 

一對夫婦的其他注意事項:1。 我IDENTIFER細胞在IB
設置爲 '細胞' 2.我的segue在IB
中設置爲'show',標識符爲'contentSegue'3. Segue從原型單元格到內容Vi新的控制器。

我完全失敗。誰能幫忙?謝謝。

+0

請提供您的下一個視圖控制器代碼 –

+0

沒有任何呢。這只是一個空的viewDidLoad()方法。 – Alex

+0

嘗試刪除你的segue並重新創建它,有時它是有幫助的,也許你從UITabeView或Cell創建它,而不是ViewController –

回答

0

您確定您已將此設置爲選擇繼續,而不是輔助操作?您可以通過點擊故事板中的單元格來檢查這一點 - 確保觸發的Segue是選擇。

也...

正如你所添加的SEGUE在你的故事板,有沒有必要啓動它在didSelectRowAt - 這樣你就可以刪除FUNC。

而且,爲了刪除您依賴於字符串比較(和取出力解開可選),試試這個...

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if let nextVC = segue.destination as? ContentViewController, 
     let cell = sender? as UITableViewCell, 
     let indexPath = tableview.indexPath(for: cell) { 

     let tab = self.config[indexPath.row] 
     nextVC.tab = tab 
    } 
} 
+0

感謝您的回覆。是的,這是一個選擇賽。我編輯了我的帖子。另外,我知道我不應該需要didSelectRowAt,但是我添加了它,因爲我的點擊事件沒有註冊。我希望能夠完全刪除它。 – Alex

+0

更多的評論序列比答案... – matt

相關問題