デリゲートの助けを借りてテーブルビューを再ロードしようとしています。私はスタックオーバーフローでたくさんの例を見つけましたが、私はいつもエラーで終わります。デリゲートをテーブルビューをリロードするように設定できません
テーブルビュー更新する必要があります私の最初のコントローラ:私が得るPageControllerで内
import Cocoa
protocol PageControllerDelegate {
func updateTableData()
}
class PageController: NSPageController {
var delegate: PageControllerDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func saveData(sender: NSButton) {
...
delegate?.updateTableData()
self.dismiss(self)
}
}
:それはテーブルビューを更新することができます最初のものを教えてください
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var tableView: NSTableView!
var tableViewData: [[String:String]] = []
override func viewDidLoad() {
super.viewDidLoad()
...
self.tableView.delegate = self as NSTableViewDelegate
self.tableView.dataSource = self
self.tableView.reloadData()
}
override var representedObject: Any? {
didSet {
}
}
func reloadTableData(_ notification: Notification) {
tableView.reloadData()
}
}
extension ViewController: NSTableViewDataSource, NSTableViewDelegate {
func numberOfRows(in tableView: NSTableView) -> Int {
return tableViewData.count
}
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView?{
var result:CustomTableCellview
result = tableView.make(withIdentifier: (tableColumn?.identifier)!, owner: self) as! CustomTableCellview
result.textField?.stringValue = tableViewData[row][(result.textField?.identifier!)!]!
result.secondTextField?.stringValue = tableViewData[row][result.secondTextField.identifier!]!
return result
}
}
extension ViewController: PageControllerDelegate {
func updateTableData() {
tableView.reloadData()
}
}
私の第二のコントローラが、次のエラー:
Property 'delegate' with type 'PageControllerDelegate?' cannot override a property with type 'NSPageControllerDelegate?' (aka 'Optional<NSPageControllerDelegate>')
残念ながら、エラーは次のとおりです。 'MyPageControllerDelegate?'タイプのプロパティ 'delegate'タイプ 'NSPageControllerDelegate?'のプロパティをオーバーライドすることはできません。 (別名「オプション」) –
northsea