2015-10-18 65 views
6

我試圖在Swift 2中實現accessoryButtonTappedForRowWithIndexPath:UITableViewController實現accessoryButtonTappedForRowWithIndexPath:在Swift 2

正如我在下面解釋的,我想我在創建disclosureIndicator時錯過了一些東西,但我不知道是什麼。它從代碼中獲取,但我的目標操作不會被調用。啊!

以編程方式做到這一點,我的理解是,我需要回到我的cell之前添加detailDisclosure指示器cellForRowAtIndexPath。我做了如下:

// Create disclosure indicator button in the cell 
let disclosureIndicatorButton = UIButton(type: UIButtonType.DetailDisclosure) 
disclosureIndicatorButton.addTarget(self, action: "disclosureIndicatorPressed:event:", forControlEvents: UIControlEvents.TouchUpInside) 
customCell.accessoryType = .DisclosureIndicator 

在我的代碼中,detailDisclosure字形被繪製,但我分配給它的目標動作方法不會被調用。

然後,我需要時,它按下按鈕創建一個處理程序:

func disclosureIndicatorPressed(sender: UIButton, event: UIControlEvents) { 
    print("disclosure button pressed") 
    // convert touches to CGPoint, then determine indexPath 
    // if indexPath != nil, then call accessoryButtonTappedForRowWithIndexPath 
} 

最後accessoryButtonTappedForRowWithIndexPath包含的代碼執行SEGUE,這是我能做到的。我錯過了什麼?

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/#//apple_ref/occ/intfm/UITableViewDelegate/tableView:accessoryButtonTappedForRowWithIndexPath

回答

12

不知道爲什麼你在代碼中增加披露按鈕指示燈這樣。

什麼你正在尋找簡單地說就是兩個步驟 -

第1步:細胞添加正確accessoryType

cell.accessoryType = .DetailDisclosureButton 

第2步:當按鈕被竊聽採取行動創建accessoryButtonTappedForRowWithIndexPath功能:

override func tableView(tableView: UITableView, accessoryButtonTappedForRowWithIndexPath indexPath: NSIndexPath) { 
    doSomethingWithItem(indexPath.row) 
} 
+0

這是我的問題。 「DisclosureIndicator」只是眼睛的糖果,除了被繪製之外不會做任何事情。 'DetailDisclosureButton'實際上可以有與之相關的操作。謝謝你讓我擺平。 – Adrian

+1

很高興幫助!歡呼:)! – Abhinav