2017-02-07 54 views
0

我有一個自定義的UIView與3 tableviews,tableviews是自我大小取決於他們有的內容,他們顯示不同的筆尖時,他們是空的,當他們有內容。所有這些都嵌入在滾動視圖中,它已經在工作,我的視圖滾動並且表視圖適當地顯示內容並且它們適當地自動調整大小,滾動視圖的大小也可以毫無問題地進行調整。委託用於控制單元格內的按鈕不工作

在兩個tableviews的時候tableviews有項目也有在細胞筆尖一些按鈕,我想用我在那裏所定義的表視圖的視圖控制器內單擊單元格的指數一起訪問。

enter image description here

在這裏,我展示各個tableViews一個項目的知情同意時,Canastas的tableView剛剛刪除項目按鈕和PRODUCTOS的tableView有一個刪除項按鈕和一個步進增加或減少量。

我發現了一個涉及StackOverflow代理的解決方案 Get button click inside UI table view cell,這是我實現的。但由於某些原因,它不起作用,委託方法中的代碼未被執行。

這裏是我的代碼:

CanastasViewCell

import UIKit 

protocol CanastasViewCellDelegate: class { 
    func closeButtonTapped(at index: IndexPath) 
} 

class CanastasViewCell: UITableViewCell { 

@IBOutlet weak var imagenProducto: UIImageView! 

@IBOutlet weak var nombreProducto: UILabel! 
@IBOutlet weak var descProducto: UILabel! 
@IBOutlet weak var precioProducto: UILabel! 

@IBOutlet weak var closeButton: UIButton! 

weak var delegate: CanastasViewCellDelegate? 

var indexPath: IndexPath! 

override func awakeFromNib() { 
    super.awakeFromNib() 

} 

@IBAction func eliminarProducto(_ sender: AnyObject) { 
     self.delegate?.closeButtonTapped(at: indexPath) 
    } 

} 

CarritoViewController

import UIKit 

class CarritoViewController: UIViewController, UITableViewDelegate, 
UITableViewDataSource, CanastasViewCellDelegate { 

func closeButtonTapped(at index: IndexPath) { 
    print("Button tapped at index:\(index)") 
} 
+0

我有一些問題了解你的代碼,因爲它不是英文。 'eliminarProducto'的意思是什麼? – paper1111

+0

eliminarProducto意味着deleteProduct,它應該從indexPath.row中刪除產品(我還沒有編碼該部分),所以現在它應該只是打印在索引處敲擊的Button:(indexPath.row),但它不會打印出來任何東西。 –

+0

檢查您是否已將按鈕正確連接到'@ IBAction' – paper1111

回答

1

它看起來像你不設置內CarritoViewController委託。您需要確保您在func tableView(UITableView, cellForRowAt: IndexPath)以內設置了cell.delegate = self

+0

看來你是對的,因爲現在我得到了點擊按鈕時,此錯誤消息: '致命錯誤:意外發現零而展開的可選value' 所以我想現在正在讀的功能,我需要圖爲什麼它是零。 –

+1

你在任何地方設置'indexPath'嗎?看看你共享的代碼,它看起來像你創建它隱式解包可選,但從來沒有給它的價值。因此,當您調用委託方法時,它仍然是零。 – swillsea

+0

@swillsea我從這篇文章複製了代碼:http://stackoverflow.com/questions/20655060/get-button-click-inside-ui-table-view-cell 它似乎沒有設置indexPath,因爲,我試着將它設置爲[],現在我再也沒有得到這個錯誤,我怎麼能在哪裏設置indexPath,以便我可以知道並存儲每次點擊行的indexPath? –