我在mac應用程序中有nstableview。一列有名字,第二個數字,第三個有複選框。當用戶打開復選框時,這應該根據同一行中第一列的名稱觸發函數。要從第一列獲得名稱(用於觸發函數)我需要知道行索引,並使用函數rowForView(_ view:NSView)。問題是我應該在這個函數中用作參數(_ view:NSView)。以下是代碼。我不知道我是否正朝着正確的方向去獲得我上面描述的內容。如何使用nstableview中的複選框來觸發函數,在swift中
相關的問題是我如何從表的第一列獲得名稱數組。我需要這個,因爲如果我將根據名稱對錶進行排序,那麼我不能使用我的數組,它用作填充nstableview的數據,我需要有序名稱數組才能正確觸發函數。
@IBOutlet weak var myCheckbox: NSButton!
@IBAction func checkboxToShowRestrctaseSites(sender: AnyObject) {
if myCheckbox.state == NSOnState
{
let objectOfPresentRestrictase = RestrictasesSorting(restrictase: "", dna: inputDnaFromUser.string!)
var tableOfNumberedRestrictase = objectOfPresentRestrictase.makeListOfPresentRestrictase()
var listOfAllRestrictaseWithSites = objectOfPresentRestrictase.searchForRestrictionSiteInList().1
var row = myTable.rowForView(_ view: NSView)
var name = Array(tableOfNumberedRestrictase.keys)[row]
var site = listOfAllRestrictaseWithSites[name]
UPDATE 我發現觸發功能啓動,如果我刪除,如果myCheckbox.state == NSOnState上班,當我用發件人作爲一個NSView作爲參數功能rowForView。要控制ON和OFF狀態,我還可以在發送條件中使用發件人。下面的代碼。
@IBAction func checkboxToShowRestrctaseSites(sender: AnyObject){
if sender.state == NSOnState
{
let objectOfPresentRestrictase = RestrictasesSorting(restrictase: "", dna: inputDnaFromUser.string!)
var tableOfNumberedRestrictase = objectOfPresentRestrictase.makeListOfPresentRestrictase()
var listOfAllRestrictaseWithSites = objectOfPresentRestrictase.searchForRestrictionSiteInList().1
var row = myTable.rowForView(sender as! NSView)
var name = Array(tableOfNumberedRestrictase.keys)[row]
var site = listOfAllRestrictaseWithSites[name]
數據源或綁定? – Willeke
@Willeke - 數據源 – VYT
sender是已打開或關閉的複選框。而不是myCheckbox你應該使用發件人。 – Willeke