2017-05-23 21 views
0

我有一個tableview,在點擊標籤我想從故事板顯示一個UIViewController使用彈出方法。我在水龍頭識別器選擇無法顯示從UITableViewCell彈出

func setupItemNameTapRecognizer(_ label:UILabel) { 
    label.isUserInteractionEnabled = true 
    let tapRecog = UITapGestureRecognizer(target: self, action: #selector(self.actionItemNameTap(_:))) 
    label.addGestureRecognizer(tapRecog) 
} 
func actionItemNameTap(_ sender:UIView) { 
    print("item tap") 
    let indexPath = IndexPath(row: sender.tag, section: 0) 
    let cell = tableView.cellForRow(at:indexPath) 
    self.showPopOverBox(cell: cell!) 
} 

下面的代碼,並在CellForRowAt方法如下代碼

let cell = tableView.dequeueReusableCell(withIdentifier: "ItemContentCell", for: indexPath) as! ItemContentCell 
     setupItemNameTapRecognizer(cell.itemName) 
     cell.itemName.tag = indexPath.row 

     return cell 

每當我點擊標籤上我獲得以下錯誤拋出,沒有得到什麼錯

[UITapGestureRecognizer標籤]:無法識別的選擇發送到實例0x7fdc1867ee90 2017-05-23 17:36:23.871 InvoiceMaster [71236:14670269] ***由於未捕獲的異常終止應用程序'NSInvalidArgumentException' 的,理由是:「 - [UITapGestureRecognizer標籤]:無法識別

回答

1

僅僅指剛改變這種方法如下面

func actionItemNameTap(_ sender: UITapGestureRecognizer) { 
    // let view = sender.view; 
    // print("\(view?.tag)") 
    print("item tap") 
    let indexPath = IndexPath(row: (sender.view?.tag)!, section: 0) 
    let cell = tableView.cellForRow(at:indexPath) 
    self.showPopOverBox(cell: cell!) 
} 
+0

爲什麼你在這兩種語言'寫的代碼的UIView * view = sender.view;' –

+0

@ Anbu.Karthik別擔心,我們可以隨時改進對方的答案 –

+0

對不起,我沒有注意到,我的錯誤。 –