ユーザーがUIBarButtonItem
をタップしたときにマスタービューをUISplitView
に更新しようとしています。詳細ビューでは、これはお気に入りのボタンです。何らかの理由で、デリゲートメソッドが呼び出されることはありません。以下の関連コード。助言がありますか?あなたは、例えばDetailViewController-> favouriteDelegate to self
を設定する必要があなたのMasterTableViewController
クラス内マスタービューが詳細ビューからデリゲートで更新されない
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()
}
}
mastertableviewcontrollerに 'detailviewcontroller.delegete = self'を設定しましたか? – ocanal
segueをディテール・ビュー・コントローラにインスタンス化または実行するときに、masterViewControllerをデレゲートとして設定してください。 – Amit
ああ - それは終わった!どうもありがとう! – Tom