我有一个自定义类,它扩展了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
中的变量?
答案 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
}