2017-09-26 113 views
0

我有一個自定義的UITableViewCell子類在那裏我把兩個按鈕中的細胞,我想既可以點擊,但到目前爲止,我甚至不能得到任何類型的點擊觸發(除了行選擇,但我禁用了我的UITableViewController子類)。基本上,當選擇兩個按鈕中的一個時,它應該移除這兩個按鈕並用可選擇的選項列表(也包括按鈕)更新單元格中的內容。我正在以編程方式執行所有操作(無IB)。在自定義的UITableViewCell攻絲多個按鈕斯威夫特

My TableViewCell with Initial Two Buttons

我環顧四周了很多,沒有發現任何東西,在一個tableViewCell處理多個按鈕。目前,我一直在努力的目標添加到我的按鈕在我的UITableViewCell的awakeFromNib():

for button in initialChoiceButtons{ 
      button.isUserInteractionEnabled = true 
      button.addTarget(self, action: #selector(initialChoicePressed(sender:)), for: UIControlEvents.touchUpInside) 
     } 

有一件事我已經試過在我的tableView在cellForRowAt爲我的自定義單元格是把我的按鈕前的細胞:

for button in (cell as! FormDropDownTableViewCell).initialChoiceButtons{ 
        cell.bringSubview(toFront: button) 
       } 

我真的很難過,覺得這應該很容易。我正在使用一個stackview內滾動視圖的邊緣的一切...

+0

好了,所以我剛剛得到這個與我的多個按鈕的工作在tableviewcell由基本目標添加到我的按鈕cellForRowAt和移動我的操作方法進入我tableviewcontroller。這裏的問題是,我想我的tableviewcell和tableviewcontroller之間要分離的功能。現在爲了得到這個工作,我不得不在我的tableviewcontroller的動作函數中執行此操作: (sender.superview!.superview!.superview!.superview as!FormDropDownTableViewCell).showSelectionButtons() –

+0

^^(sender is UIButton的),然後superviews是VerticalStackView,Horizo​​ntalStackView,內容查看,UITableViewCell的..必須有一個更好的辦法,我可以保持我的實際操作方法我tableviewcell內 –

回答

0

好吧,所以我想通過創建一個委託協議與我的tableviewcell中分離按鈕水龍頭我會在我的tableviewcontroller中調用我的目標在我的tableviewcell中的每個按鈕。

protocol UIButtonSelectorDelegate{ 
    func handleTap(button:DelegatingButton) //will select different functions based on DelegatingButton.actionType 
} 
class DelegatingButton:UIButton{ 
    var selectorDelegate:UIButtonSelectorDelegate? 
    var actionType:String = "default" 
} 
在我FormDropDownTableViewCell

我符合UIButtonSelectedDelegate和實施handleTap像這樣:

func handleTap(button:DelegatingButton){ 
     switch button.actionType{ 
     case "initialChoiceSelect": 
      initialChoicePressed(initialChoice:button) //specific method for certain button.actionType also in my FormDropDownTableViewCell 
     case "cardTypeSelect": 
      cardTypeSelected(selectedCardType:button) 
     default: 
      break 

     } 
    } 

現在我添加在cellForRowAt每個按鈕的目標,行動在我tableviewcontroller像這樣:

button.addTarget(self, action: #selector(handleButtonTaps), for: UIControlEvents.touchUpInside) 

和tableviewcontroller中的handleButtonTaps func很簡單:

func handleButtonTaps(sender: DelegatingButton){ 
     sender.selectorDelegate?.handleTap(button: sender) 
    } 

喜歡自言自語= P ..