从另一个Controller追加数组

时间:2016-04-19 17:30:51

标签: ios swift uiviewcontroller

我想将新元素追加到数组中。我正在使用容器视图。我将addItem函数调用到tableviewcontroller。但我点击按钮没有任何反应。

我的TableViewController

import UIKit

class TableViewController: UITableViewController {

    var myArray = ["1"]

    override func viewDidLoad() {
        super.viewDidLoad()

    }

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

    func addItem () {
        myArray.append("asd")
        tableView.reloadData()
    }

    // MARK: - Table view data source

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return myArray.count
    }


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath)

        // Configure the cell...
        cell.textLabel?.text = myArray[indexPath.row]

        return cell
    }

}

我的TableViewController

import UIKit

class ViewController: UIViewController {

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

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func addButton(sender: AnyObject) {
        TableViewController().addItem()
    }

}

2 个答案:

答案 0 :(得分:0)

TableViewController()。addItem()行意味着创建一个全新的TableViewController实例,然后在其上调用addItem()。您需要找到对要操作的TableViewController的特定实例的引用。 ViewController如何与调用addItem的那个相关联?

答案 1 :(得分:0)

它应该是这样的:

class ViewController: UIViewController {
    let tableViewController = TableViewController()
    ..

    @IBAction func addButton(sender: AnyObject) {
        tableViewController.addItem()
    }
}