2017-03-14 3 views
0

これを使用しようとしましたが、solutionは動作しません。 私はカスタマイズされたセルのボタンで、テーブルビューから使用される配列のデータを知っています(後でCoreDataに適用します)。たとえば、テーブルビューを生成した配列の値を出力します。Swift 3のカスタマイズされたUITableViewCellでボタンを実装する方法は?

が、私はそれを

を行う方法を理解することはできません私はボタンアクションまたは(タグ付き)出口ボタンの両方を使用しようとしたカスタマイズされたセルクラス、持っている:

import UIKit 

class MyTableViewCell: UITableViewCell { 


@IBOutlet weak var myCellImage: UIImageView! 
@IBOutlet weak var myCellLabel: UILabel! 

override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
} 

override func setSelected(_ selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    // Configure the view for the selected state 
} 





} 

をそして、のViewControllerはどこ拡張子を持つ私のテーブルビューで

extension ViewController { 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return comicsArray.count 
} 



func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 


    let cell = myTableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! MyTableViewCell 

    cell.myCellLabel.text = String(indexPath.row) 
    cell.myCellButton.tag = indexPath.row 
    cell.myCellButton.addTarget(self, action: Selector("logAction:"), for: .touchUpInside) 

    return cell 
} 


func logAction(sender: UIButton) { 

    let titleString = self.comicsArray[sender.tag] 

    let firstActivityItem = "\(titleString)" 

    let activityVC = UIActivityViewController(activityItems: [firstActivityItem], applicationActivities: nil) 

    self.present(activityVC, animated: true, completion: nil) 

} 



} 

EDIT:サブクラスセルに追加することにより、abdullahselekの助けを借りて解決

public var dataFromTableView : String! 

と実装:

@IBAction func myCellButtonTapped(_ sender: UIButton) { 


    guard dataFromTableView != nil else {return} 

    print("pushed \(dataFromTableView!)") 


} 

とcellForRowAtで:

cell.data = comicsArray[indexPath.row] 
+0

中でデータに到達することができますが、私はそれらを使用することができるか、代表者 – GeneCode

+0

こんにちはGeneCodeを使用することができますか? – biggreentree

+0

私はすぐに知っていません。しかしここに例があります:http://stackoverflow.com/a/29724262/501439 – GeneCode

答えて

0

辞書やオブジェクトモデルを追加あなたのカスタムtableviewcellのようなプロパティ

public var data: Dictionary! 

そして

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    ... 

    cell.data = comicsArray[indexPath.row] 

} 

このデータプロパティを設定する次に、あなたはボタンがあなたのtableviewcell

+0

辞書は動作していませんが、public var data:String! が動作しています!コアデータエンティティからのデータまで管理するのが適切な方法だと思いますか? – biggreentree

+0

あなたはあなたの配列にちょうど文字列値を持っています私はコアデータエンティティを使うことは文字列値のために必要だとは思わない – abdullahselek

+0

ああ、これは配列からデータを渡す/変更するためのテストですコアデータ)をボタン – biggreentree

関連する問題