【发布时间】:2016-11-12 18:56:47
【问题描述】:
我有一个基于 Master-Detail 模板的 swift 应用程序。 MasterView 表中的每一行都基于从笔尖接收的自定义单元格。每个单元格都包含UIlabel 和UIbutton。该应用程序的逻辑如下。如果用户点击行DetailView 会根据所选行显示一些详细信息。行上的按钮不调用tableView(_, didSelectRowAtIndexPath)。如果用户点击一行内的按钮,则只有属于DetailView 的图像应更改(DetailView 上的其他元素保持不变)但事实并非如此。如果我选择另一行而不是选择前一行,则更改后的图像将显示在DetailView 上,正如预期的那样。问题是如何通过点击按钮重绘DetailView 中的图像。
我尝试过以下操作,但没有成功:
class MasterViewCell: UITableViewCell {
weak var detailViewController: DetailViewController?
@IBAction func buttonTap(sender: AnyObject) {
//method to set new image
detailViewController!.setNewImage()
detailViewController!.view.setNeedsDisplay()
}
}
class MasterViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
let nib = UINib(nibName: "itemCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "Cell")
if let split = self.splitViewController {
let controllers = split.viewControllers
self.detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController as? DetailViewController
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as? MasterViewCell
cell?.detailView = self.detailViewController
return cell!
}
【问题讨论】:
标签: ios swift master-detail redraw