2016-01-16 97 views
0

我在嘗試segue數據從UIViewControllerUITableViewControllerUIViewController中的數據來自PFTableViewController,我希望將該數據傳遞給另一個TableViewController從UIViewController繼承到UITableViewController

傳遞給ViewController didSelect方法被使用,但我不知道如何從viewController延伸到TableViewController

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let destinationToFVC:ViewController = self.storyboard!.instantiateViewControllerWithIdentifier("FVCont") as! ViewController 

    if let indexPath = self.tableView.indexPathForSelectedRow { 
     let row1 = Int(indexPath.row) 
     destinationToFVC.currentObject = objects?[row1] as! PFObject! 


    } 
    navigationController?.pushViewController(destinationToFVC, animated: true) 

} 

我是新手編程。

回答

0

對於您的情況,您可以使用方法performSegueWithIdentifierdidSelectRowAtIndexPath手動啓動segue。

您需要從UIViewController建立在你的故事板自定義SEGUE您UITableViewController,併爲它設置一個Identifier,你可以從你UIViewControllerCtrl + Click下一個創建自定義SEGUE,然後選擇SEGUE和在屬性檢查器設置標識符SEGUE只是這樣的畫面:

enter image description here

那麼您可以在您的didSelectRowAtIndexPath手動啓動SEGUE在此代碼:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    // the identifier of the segue is the same you set in the Attributes Inspector 
    self.performSegueWithIdentifier("mySegueID", sender: self) 
} 

當然,你需要實現方法prepareForSegue從您UIViewController數據傳遞到您的UITableView像這樣的代碼:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "mySegueID") { 
     // in this line you need to set the name of the class of your `UITableViewController` 
     let viewController = segue.destinationViewController as UITableViewController 
     let indexPath = self.tableView.indexPathForSelectedRow() 
     destinationToFVC.currentObject = objects?[indexPath] as! PFObject! 
    } 
} 

編輯:

如果你想執行從UIButtonUITableViewController這是同樣的邏輯,只是在你的故事板創建自定義SEGUE,然後調用prepareForSegue像下面的代碼:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "mySegueID") { 
     // in this line you need to set the name of the class of your `UITableViewController` 
     let viewController = segue.destinationViewController as UITableViewController 
    /here you need to pass the data using the reference viewController 
    } 
} 

我希望這可以幫助您。

+0

謝謝@Victor,但有一個問題,我不能使用上面的語法,因爲我想從'UIViewController'繼承到'UITableViewController',並且上面的語法可以在'UITableViewController'協議中使用,根據多少直到現在我已經學會了'Swift和Xcode' –

+0

@SabhaySardana你想如何從UIButton手動或其他方式創建一個Segue? –

+0

與ViewController中的按鈕。 –

相關問題