@IBAction func test(sender: AnyObject) {
if(cell.detailTextLabel!.hidden == false) { cell.detailTextLabel!.hidden = true; } else { cell.detailTextLabel!.hidden = false; } }
こうすると Use of unresolved identifier "cell"というエラーがでます。
ちなみにセル上のidentifierはcellにしております。
何卒ご教授いただけると幸いです。よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
手っ取り早いのはセルを使ってるViewControllerクラス側でdetailTextLabelの表示フラグを持っておくことですかね、cellForRowAtIndexPath関数内で表示フラグを見てdetailTextLabelを表示するかどうかの処理を書いておいて、表示フラグが切り替わったタイミングでreloadDataを呼び出すとうまくいくのではないでしょうか
Swift
1 var tableView: UITableView! 2 3 var isShowDetailTextLabel = false // falseとしてますが初期値としたいBool値で 4 5 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 6 let cell = tableView.dequeueReusableCellWithIdentifier("cellIdentifier", forIndexPath: indexPath) as! UITableViewCell 7 8 cell.detailTextLabel?.hidden = !self.isShowDetailTextLabel 9 10 return cell 11 } 12 13 @IBAction func test(sender: AnyObject) { 14 self.isShowDetailTextLabel = !self.isShowDetailTextLabel 15 self.tableView.reloadData() 16 }
投稿2015/07/30 06:33
編集2015/07/30 06:58総合スコア264
0
cell
という変数が解決できないっていうエラーですね。
ちなみにおっしゃっているidentifierはセルにつけるラベルみたいなものです。
なぜラベルをつけるかというと。
UITableViewは基本的に必要なセル数(表示領域内を埋められるのに十分な数)しか生成しません。
スクロールするとたくさんセルがあるように見えますが、画面外に消えたセルを使いまわして余分なセルを作らないように節約しているんです。
そしてラベルと書いたのは、この「再利用される」セルを識別するためです。
同じラベルがついた未使用のセルがある場合はそれを使い、ない場合は新規作成、となります。
◆
と、ここまでがセルの使われ方の話です。
おそらく上記のラベルを指定して処理を書こうとしているのだと思いますが、説明した通りあくまでラベルとしての意味しかないので、「セルのインスタンス」を取得してそれに対して処理を書かないとなりません。
具体的に言うと、今「表示されている」セルはtableView.visibleCells()
で取得できます。
配列が返されるので、これをfor文などでループさせてそのセルに対して処理をしてやれば解決できると思います。
まずはUITableViewのセルがどう扱われるか、というのをしっかりと理解することをおすすめします。
投稿2015/07/30 02:09
総合スコア2283
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/30 03:43
2015/07/30 04:07
2015/07/30 04:10
2015/07/30 04:16
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/30 09:25
2015/07/30 13:28
2015/07/30 14:33