2017-10-16 154 views
0

所以我想通過按鈕「移動到新的tableview」(檢查圖片)將我的tableview從「ViewController」轉移到我的「SecondViewController」。 而在我的桌面視圖中,我想讓所有的單元格都添加在那裏pelaajat.append如何將tableview移動到新的tableview與按鈕之外tableview

模擬器和故事板圖像在下面給出。

import UIKit 

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 


    @IBOutlet weak var textField: UITextField! 
    @IBOutlet weak var tableView: UITableView! 

    var pelaajat = [String]() 


    override func viewDidLoad() { 
     super.viewDidLoad() 
     tableView.tableFooterView = UIView(frame: CGRect.zero) 
    } 

    @IBAction func movetoNewTableview(_ sender: Any) { 
    } 

    @IBAction func addName(_ sender: Any) { 
     lisaaPelaajanNimi() 
    } 

    func lisaaPelaajanNimi(){ 

     pelaajat.append(textField.text!) 

     let indexPath = IndexPath(row: pelaajat.count - 1, section: 0) 

     tableView.beginUpdates() 
     tableView.insertRows(at: [indexPath], with: .automatic) 
     tableView.endUpdates() 

     textField.text = "" 
     view.endEditing(true) 
    } 



    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


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

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

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

     cell.textLabel?.text = pelaajat[indexPath.row] 

     return cell 
    } 

    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 
     return true 
    } 

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 

     if editingStyle == .delete{ 
      pelaajat.remove(at: indexPath.row) 

      tableView.beginUpdates() 
      tableView.deleteRows(at: [indexPath], with: .automatic) 
      tableView.endUpdates() 
     } 
    } 

} 
+0

你想要的是將細胞(數據)移動到另一個UIViewController內的另一個tableview? –

+0

你和其他UIViewController裏面的tableview也 – Tonil92

+0

傳遞數據並顯示在第二個視圖控制器在tableView ...爲什麼移動單元格??當你可以傳遞數據......給一些更多的細節你試圖用這個來達到什麼所以我可以幫你 –

回答

0

UIButton行動,在執行前推你應該通過var pelaajat新的UIViewController:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let secondViewController = segue.destination 
    secondViewController.pelaajat = self.pelaajat 
} 

在SecondViewController,實現您的如您所願,請使用和UITableViewDelegate,但請再次使用您的pelaajat數據。

通過這樣做,您可以在第一個視圖控制器中保留數據,並且可以使用新的委託/數據源根據第二個視圖控制器的需要來操作它。

然而,如果你不想一遍執行同樣的方法,你應該創建的UITableView一個子類,並實現其委託和數據源只有一次,然後在你的故事板分配每個UITableView類作爲您的自定義班級。

+0

感謝那正是我需要的 – Tonil92

0

最簡單的方法是在單獨的類下抽象您的DataSource並將它傳遞給這兩個UIViewControllers。

如果您還想在多個UITableView類之間共享單元格原型,最簡單的方法是在單獨的.xib文件(單獨的XIB中的每個UITableViewCell)中準備這些原型。

0

第一種解決方案:將數據(pelaajat)發送到具有segue發件人的另一個視圖控制器。並在第二個視圖控制器中設置相同的值。

第二種解決方案:如果您想在多個視圖控制器中使用同一個表視圖,則應該創建一個基本視圖控制器並從基本視圖控制器獲取數據。如果你想更新你的所有表格視圖,你需要做的一件事就是更新你的基本視圖控制器。