我有一个基于Master-Detail
模板的快速应用程序。 MasterView
表中的每一行均基于从nib收到的自定义单元格。每个单元包括UIlabel
和UIbutton
。该应用程序的逻辑如下。如果用户在行DetailView
上点击显示取决于所选行的一些细节。该行上的按钮不叫tableView(_, didSelectRowAtIndexPath)
。如果用户点击一行内的按钮,则只应更改图像属于DetailView
(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!
}
尽管您的方法正确,但我们通常不会使用授权进行主 - >详细通信。当detailView想**向主人回话时,我们使用代表团。 –
@RayTso,我同意。但对于这个特定问题,它似乎是最好的解决方案。 –
你*** ***知道我在谈论segues? –