我有一個基於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? –