Obj.C

obj.C:NSViewTableの更新 reloadData

Table Viewが更新でつまづいていました。

昨夜、さらにまた機能実装したのでbuildして動かしたら、全くダメでした。表(Table View)が更新されません。表示されないどころか、カラムに設定しているはずの常数も何も出てきません。やれやれ。

問題点:

  • 表に行を追加し、カラムのオブジェクトを更新できない。
  • サブクラスではちゃんと動く同じロジックを使っているのに・・・。

前提:

  • 表はText Viewを扱うメインのサブクラスとして機能実装。
  • メイン側でTable Viewと対応する配列を参照する必要が出てきたのでTable Viewを@interfaceに定義。

現象:

  • サブクラスの中のIBActionで動く行の追加・挿入・削除は問題なく動く。
  • 全く同じロジックをメイン側から直接呼び出すと、無音。何も起こらない。

原因:

  • メインとサブクラスの両方で使っている、@interfaceに定義したNSTableArray *wkArray;が同じ領域を指していないことが原因のようです。これをグローバル変数にしたら、OKになりました。
    ➡機能分割の基本構造が悪そうなのであとで再編するべきなのでしょうね?
  • もうひとつの問題は、 [tableView reloadData]; をサブクラス側で実行していたのですが、これをメイン側に持って来たら、表が描画されるようになりました。
    ➡これも機能分割の悪さが原因?
  • 全く使い方がよくわかっていないので書くのも恥ずかしいですが、@interfaceの中で@publicの下に変数を置いてみたのですが、こういうやり方ではダメなようです。

とりあえず動くようになったので、実装したコードのバグを取って行くことに集中します。いろんな機能を盛り込んだので、今夜半までには終わらせられないでしょう。IMG_3159

Categories: Obj.C, 技術

Tagged as: