0
配列からデータを取り込んだNSTableViewがあります。SwiftでNSButtonを使用してNSTableViewの配列からデータを削除
タップすると、配列内のその行からアイテムを削除する必要があるボタンが作成されました。
私は配列からデータを削除してテーブルの列を削除する方法に苦労していますか?
var messagesRef: Firebase!
var messages = [Message]()
func setupFirebase() {
messagesRef = Firebase(url: "https://url")
messagesRef.queryLimitedToLast(10).observeEventType(FEventType.ChildAdded, withBlock: { (snapshot) in
let text = snapshot.value["text"] as? String
let sender = snapshot.value["sender"] as? String
let imageUrl = snapshot.value["imageUrl"] as? String
let message = Message(text: text, sender: sender, imageUrl: imageUrl)
self.messages.append(message)
self.tableView.reloadData()
})
}
と私のテーブルのデリゲートとデータソースは次のとおりです:
マイ配列の参照がある
func numberOfRowsInTableView(tableView: NSTableView) -> Int {
return self.messages.count
}
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
let result = tableView.makeViewWithIdentifier("cell", owner: self) as? secondviewTableCell
let mess = messages[row]
result?.textField?.stringValue = mess.text()
result?.sendertextView.stringValue = mess.sender()
result?.removeButton.target = self
result?.removeButton.action = #selector(secondVC.removeFromScreen)
return result
}
func removeFromScreen(){
}
私は、テーブルビュー内の行を削除するために管理してきましたが、私はまだ削除して苦労しています配列内の行からのデータこれは、ビューベースのテーブルビューを使用してMacOSの中には非常に簡単です
@IBAction func removetablerow(object: NSButton) {
let row = tableView.rowForView(object as NSView)
if (row > -1) {
let indexSet = NSIndexSet(index:row)
tableView.removeRowsAtIndexes(indexSet, withAnimation: NSTableViewAnimationOptions.EffectFade)
NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: #selector(secondVC.rowDeleted(_:)), userInfo: row, repeats: false)
}
}
私はバック型の値のエラーを取得する「NSTableView」この答えとはメンバー「行」を持っていません。 –
これはSwift 3コードです。あなたはSwift 2を使用しているようです。あなたは 'messages'配列からも項目を削除する必要があります。 – vadian