2016-04-09 83 views
0

我有一個包含TableView的ViewController。我想在每個單元格中做一個紅色的按鈕,他們做了一些事情(讓我們說'hello'來測試),或者當我觸摸單元格的任何地方,但不是按鈕時,我會執行一個segue。Swift - 在表視圖單元格中未觸發按鈕操作

但是,即使當我觸摸按鈕,這是誰執行SEGUE。我嘗試了SF一些搜索,但沒有任何的問題,幫我...

我不知道這是通常的,但是當我接觸到的細胞,所有的行白色背景變成灰色,紅色按鈕,甚至背景。

在故事板我有這樣的細胞層次:

hierarchy of the cell

的用戶交互的兩種細胞和按鈕啓用。

在問題我發現他們說,在小區集中的「披露指示器」附件',我做到了,但如果可能的話,我想保持在「無」。 我也設置了電池的自定義類,這裏是代碼:

class MyTableViewCell: UITableViewCell { 
@IBOutlet weak var rentButton: UIButton? // I use this class for 2 tableview almost similar, but in the other I don't have the redButton, that's why I put an '?' 
} 

我還設置了代理和的tableView的數據源到我的ViewController,這裏是我的視圖控制器的代碼:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! MyTableViewCell 

    cell.rentButton!.tag = indexPath.row 
    cell.rentButton!.addTarget(self, action: #selector(MyViewController.rent(_:)), forControlEvents: .TouchUpInside) 

    return cell 
} 
// Rent() is never called: 
func rent(sender: UIButton) { 
    print("here \(sender.tag)") 
} 

編輯:解決的辦法是從conainer角度提出了按鈕!

回答

1

您可以從當按鈕被編程執行它壓actioning停止SEGUE。你可以做到以下幾點:

  1. 刪除您賽格瑞從細胞到另一個視圖控制器進入並改變它從TableViewController轉到其他視圖控制器

  2. 在TableViewController類等創建一個變量如:VAR buttonPressed =假

  3. 在您的按鈕操作集buttonPressed爲true

  4. 在didSelectRow,檢查buttonPressed是不是真的那麼performSegue和變化buttonPressed爲假,其他什麼也不做

  5. 如前所述,從容器中移動的按鈕,內容視圖

+0

謝謝。但它仍然不起作用。 :(每個單元格的segue不是從單元格中移出,而是從ViewController中移出,我按Ctrl +從第一個VC上的黃色圖標拖動到第二個VC上,實際上,方法rent()永遠不會調用,始終執行SEGUE ... – Kev

+1

你能嘗試移動租金按鈕出ContainerView,進入內容查看?第一個停靠港應該得到這個觸發正確 –

+0

我感動的按鈕從容器視圖和它的作品!謝謝你好! – Kev

相關問題