2017-02-07 12 views
0

私は3つのテーブルビューを持つカスタムUIViewを持っていますが、テーブルビューは内容に応じてセルフサイズしています。内容を持っている。これらはすべてスクロールビューに埋め込まれていますが、すでに動作しています。ビューのスクロールとテーブルビューでコンテンツが適切に表示され、適切に自動サイズ設定されます。スクロールビューのサイズは問題なく調整されます。セル内のボタンを制御するために使用される代理人

テーブルビューにアイテムがある場合、セル・インデックスには、テーブル・ビューを定義したビュー・コントローラ内でクリックされたセルのインデックスとともにアクセスするボタンがいくつかあります。ここで私は一つの項目でtableViewsそれぞれを示していますPICで

enter image description here

は、CanastasのtableViewはちょうど項目削除ボタンがあり、PRODUCTOSのtableViewが増加または減少する項目削除ボタンやステッパーを持っています量。

実装したStackOverflowGet 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

delearProductoはdeleteProductを意味し、indexPath.rowから商品を削除する必要があります(私はまだその部分をコーディングしていません)ので、今すぐインデックスでタップされたButton :(indexPath.row)を印刷する必要がありますが、何でも –

+0

ボタンを '@IBAction'に正しく接続したことを確認してください – paper1111

答えて

1

あなたはCarritoViewController内のデリゲートを設定していないように見えます:

は、ここに私のコードです。あなたはcell.delegate = selffunc tableView(UITableView, cellForRowAt: IndexPath)の範囲内に設定してください。

+0

ボタンをクリックすると、今私は、このエラーメッセージが表示されましたので、あなたが正しいと思われますなぜそれがゼロであるかを調べる。 –

+1

'indexPath'はどこに設定していますか?共有したコードを見ると、暗黙のうちにアンラップされたオプションとして作成されたように見えますが、決して価値を与えたことはありません。したがって、あなたがデリゲートメソッドを呼び出すとき、それはまだゼロです。 – swillsea

+0

@swillseaこの投稿のコードをコピーしました:http://stackoverflow.com/questions/20655060/get-button-click-inside-ui-table-view-cell indexPathが設定されていないようですが、私はそれを[]に設定しようとしましたが、今はエラーが発生しなくなりました。どのようにしてindexPathを設定して、各クリックで行のindexPathを知って保存できるのですか? –

関連する問題