teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正 

2016/05/11 11:27

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -2,4 +2,92 @@
2
2
 
3
3
  そちらを確認してみてください。
4
4
 
5
+ 追加質問の回答
6
+ ---
7
+
8
+ この場合、テーブルがスクロールするたびにaddTargetされているので複数回呼ばれています。
9
+ 通常の場合はdelegateを使用して処理するのが一般的だと思うのでそのやり方を以下に載せます。
5
- 分からなければその部分のコードも載せてください。
10
+ ※追加、削除と書てあるのが変更した場所です
11
+
12
+ ```swift
13
+
14
+ import UIKit
15
+
16
+ class MainViewTableCell: UITableViewCell {
17
+
18
+ @IBOutlet weak var projectNameLabel: UILabel!
19
+ @IBOutlet weak var Btn: UIButton!
20
+
21
+ // ↓ 追加
22
+ weak var delegate: UITableViewCellDelegate!
23
+
24
+
25
+ class func nibName() -> String {
26
+ // クラス名と nib 名が同じ前提
27
+ return String(self)
28
+ }
29
+
30
+ class func cellId() -> String {
31
+ return String(self)
32
+ }
33
+
34
+ func setupWith(cellInfo cellInfo_: MainViewCellInfo) {
35
+ self.projectNameLabel.text = cellInfo_.projectName
36
+
37
+ //BtnにIDをセット
38
+ self.Btn.tag = cellInfo_.id
39
+
40
+ // addtargetは削除
41
+ }
42
+
43
+ // ↓ ボタンタップのIBActionを追加
44
+ @IBAction func pushButton(sender: UIButton) {
45
+ delegate.onMessageBtnClick(Btn)
46
+ }
47
+ }
48
+
49
+ // プロトコルの定義を追加
50
+ protocol UITableViewCellDelegate: class {
51
+ func onMessageBtnClick(sender: UIButton)
52
+ }
53
+ ```
54
+
55
+ ```swift
56
+ import UIKit
57
+ import Alamofire
58
+ import SwiftyJSON
59
+
60
+ // ↓ UITableViewCellDelegateを追加
61
+ class GroupsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITableViewCellDelegate{
62
+
63
+ @IBOutlet weak var TableView: UITableView!
64
+
65
+ override func viewDidLoad() {
66
+ super.viewDidLoad()
67
+
68
+ self.TableView.delegate = self
69
+ self.TableView.dataSource = self
70
+ self.TableView?.rowHeight = 80.0
71
+
72
+ }
73
+
74
+ func tableView(TableView: UITableView, numberOfRowsInSection section: Int) -> Int {
75
+ print(jsonArray.count)
76
+ return jsonArray.count
77
+ }
78
+
79
+ func tableView(TableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
80
+ 色々書いてます
81
+
82
+ // 以下を追加
83
+ cell.delegate = self;
84
+ }
85
+
86
+ func onMessageBtnClick(sender: UIButton) {
87
+ self.delegate._selectedProjectId = sender.tag
88
+ let storyboard = UIStoryboard(name: "Main", bundle: nil)
89
+ let nextVC = storyboard.instantiateViewControllerWithIdentifier("NextViewController")
90
+ self.navigationController?.pushViewController(nextVC, animated: true)
91
+ }
92
+ }
93
+ ```

1

修正

2016/05/11 11:27

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -1,4 +1,4 @@
1
- TableViewがnilとの事なので、おそらく問題はこちらクラスではなく遷移する前の部分での生成方法でStoryboardとクラスが紐付いていないのだと思います。
1
+ TableViewがnilとの事なので、原因一つとして遷移する前の部分での生成方法でStoryboardとクラスが紐付いていない事が考えられます。
2
2
 
3
3
  そちらを確認してみてください。
4
4