나는 Master-Detail
템플릿을 기반으로하는 신속한 응용 프로그램을 가지고 있습니다. MasterView
테이블의 모든 행은 펜촉에서 수신 한 사용자 정의 셀을 기반으로합니다. 모든 셀에는 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가 마스터에게 ** 회신을 원할 때 위임을 사용합니다. –
@ 레이즈, 나는 동의한다. 그러나이 특정 문제에 대해서는 최상의 솔루션 인 것 같습니다. –
당신 *** *** 내가 섹스에 대해 말하는 거 알아? –