Swift从UITableViewCell中删除存储在UITableViewController中的数据

时间:2015-08-18 12:55:36

标签: ios swift uitableview

我有一个自定义类,它扩展了UIViewController并包含一个表视图,其中包含一个存储填充表视图的数据的数组。对于我的自定义单元格,我有一个按钮,按下该按钮时,应从表格视图中删除该单元格。但是,我还没有找到一种方法从表视图控制器中删除数组中的数据,并从单元的类重新加载数据。我在类似帖子中看到的一些答案建议通知或委托,但由于我的应用程序(标签控制器)的结构以及我已经使用其他功能的通知,前者效率低下,我不会#39在这种情况下,我知道如何使用后者。 这是自定义单元类的代码:

while(!exitRequested_)
{
  if (std::cin.peek())
    inputAvailable_ = true; // this is atomic

  std::this_thread::sleep_for(std::chrono::milliseconds(10));
}

这是表视图控制器类:

class CustomCell: UITableViewCell {
    @IBOutlet var label: UILabel!
    @IBOutlet var removeButton: UIButton!

    @IBAction func remove(sender: AnyObject) {
        // don't know what to put here
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
         super.init(style: style, reuseIdentifier: reuseIdentifier)
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
}

数组class CustomController: UIViewController, UITableViewDataSource { @IBOutlet var table: UITableView! var data: [String] = [] override func viewDidLoad() { super.viewDidLoad() table.dataSource = self } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return data.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell: CustomCell = table.dequeueReusableCellWithIdentifier("CustomCell", forIndexPath: indexPath) as! CustomCell // put content in return cell } } 是我想从data remove中访问的内容。我最接近的是在CustomCell中使用self.superview.superview.superview,它会返回CustomCell控制的视图。但是,我无法在不实例化新实例的情况下获取CustomController的实例。如何从CustomController类修改CustomController中的变量?

1 个答案:

答案 0 :(得分:1)

在自定义单元格中添加此

class CustomCell: UITableViewCell {
 var customControllerReference: CustomController?
}

在cellForRowAtIndexPath的自定义控制器中添加此

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell: CustomCell = table.dequeueReusableCellWithIdentifier("CustomCell", forIndexPath: indexPath) as! CustomCell
        cell.customControllerReference = self
        return cell
    }