更新我想,當用戶在詳細視圖,它代表了最喜歡的按鈕,點擊一個UIBarButtonItem
以更新UISplitView
主視圖。出於某種原因,委託方法永遠不會被調用。下面的相關代碼。有什麼建議麼?母版視圖不委託從細節視圖
import UIKit
import WebKit
protocol FavouriteCaseDelegate: class {
func updateMasterForFavouriteStatusChange(caseID: Int, favouriteStatus: Bool)
}
class DetailViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
weak var favouriteDelegate: FavouriteCaseDelegate? = nil
override func viewDidLoad() {
super.viewDidLoad()
//Configure favourite bar button
favouriteButton = UIButton.init(type: .custom)
if caseFavourited == false {
favouriteButton.setImage(UIImage(named: "FavouriteIcon"), for: UIControlState.normal)
} else {
favouriteButton.setImage(UIImage(named: "FavouriteIconSelected"), for: UIControlState.normal)
}
favouriteButton.addTarget(self, action:#selector(didTapFavouriteBarButton), for: UIControlEvents.touchUpInside)
favouriteButton.frame = CGRect.init(x: 0, y: 0, width: 30, height: 30)
let favouriteBarButton = UIBarButtonItem.init(customView: favouriteButton)
self.navigationItem.rightBarButtonItem = favouriteBarButton
}
func didTapFavouriteBarButton() {
caseFavourited = !caseFavourited
CaseManager.caseWorker.changeFavouritedStateForCase(subjectID: subjectID, caseID: caseID, isFavourited: caseFavourited)
favouriteDelegate?.updateMasterForFavouriteStatusChange(caseID: caseID, favouriteStatus: caseFavourited)
}
import UIKit
class MasterTableViewController: UITableViewController, FavouriteCaseDelegate {
func updateMasterForFavouriteStatusChange(caseID: Int, favouriteStatus: Bool) {
print("updateMasterForFavourite called")
self.tableView.reloadData()
}
}
你設置'detailviewcontroller.delegete = self'在mastertableviewcontroller? – ocanal
嘗試在當你實例化或執行SEGUE細節視圖控制器的時間設定爲masterViewController委託。 – Amit
啊哈 - 完成了!非常感謝! – Tom