2017-09-01 34 views
0

由於我的單元格可以在水龍頭上進行擴展,並且在可擴展部分中包含兩個按鈕,所以當用戶點擊這些按鈕以改進用戶體驗時,我想使DidSelect/DidDeselect不被調用。如何禁用調用UITableViewCell某些部分的DidSelect?

這些按鈕放置在另一個UIView內的StackView中。

enter image description here

我試過兩個stackView和UIView的容器禁用用戶交互,但結果是一樣的。

你會推薦什麼來禁用整個UIView容器(請注意,這是我的單元格的一部分)在點擊時調用DidSelect/DidDeselect?

+0

完全禁用選擇,並在單元格本身中執行選擇,但僅限於您希望選擇的部分。 –

+0

您可以將這些按鈕放在另一個尺寸較大的視圖上。 – vaibhav

+0

@vaibhav他們已經放在視圖中,看到 – DCDC

回答

1

嘗試執行stackView中這兩個按鈕的操作。

// inside cellForRowAt indexPath 
cell?.button1.tag = indexPath.row 
cell?.button1.addTarget(self, action: #selector(defineTypeAction(_:)), for: .touchUpInside) 

各自的行動:

func defineTypeAction (_ sender: UIButton){ 
    let alert=UIAlertController(title: kAppName, message: "Select", preferredStyle: UIAlertControllerStyle.alert) 
    alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: {(action:UIAlertAction) in 
     sender.setTitle("your title", for: .normal) 
     // your custom code 
    })); 

    present(alert, animated: true, completion: nil) 
} 

當您點擊按鈕的操作方法將被調用,而不是tableView委託方法。

+0

感謝您的回答,但我不知道這個答案如何關聯在TableViewCell的某個部分上禁用DidSelect – DCDC

+0

您無法禁用'tableView'的委託方法,如果您實現了這些方法,則只能分配按鈕目標以防止'didSelect'方法調用。 – vaibhav