3

の中に をUITableView埋め込んでUIViewControllerいますが、いくつか問題があります。テーブル ビューのデリゲートをビュー コントローラーに設定しました。

1) データ ソースは、インターネットから取得される配列です。問題は、データがダウンロードされて配列に配置され、[self.tipTableView reloadData]呼び出されたときに、テーブルが更新されないことです。が呼び出され、正しい番号 (0 ではない) を返していることがわかりますが、numberOfRowsInSection:は呼び出されませんcellForRowAtIndexPath:。ただし、配列にデータがある場合はviewDidLoad、正しくロードされます。

2) テーブルをデフォルトで非表示にし、ボタンを押すと表示されるようにしたい。テーブルを非表示にviewDidLoad設定すると問題なく動作しますが、ボタンを押したときにテーブルを表示に設定しようとすると機能しません。私はself.tipTableView.hidden = NO;これを試みていますが、これviewDidLoadは他の方法では機能しないように見えます。

テーブル ビューはインターフェイス ビルダーで作成され、次の図のようにビュー コントローラーに接続されています。

ここに画像の説明を入力

なぜこれらの問題が発生しているのか、誰にもわかりませんか?

ありがとう!

4

3 に答える 3

1

私の知る限り、cellForRowAtIndexPathメソッドは、現在画面に表示されているセルに対して呼び出されます。テーブルをリロードしている間は、まだ見えないと思います。したがって、表示するデータがある場合は、最初に非表示の NO を設定し、その後すぐにデータをリロードする必要があります。

于 2013-03-19T08:01:43.690 に答える
0

1:

datesource に少なくとも次のメソッドを実装する必要があります。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [yourarray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// that's up to you
}

numberoOfRowsInSectionを実装するのを忘れたと思います。

2:

試す:

[self.tableView setHidden:NO];

それを表示した後にループしていなければ、それはうまくいくはずです( while (condition) do_something; )。

これは、メイン スレッドでネットワークから何かをダウンロードしている場合にも当てはまります。

于 2012-09-28T13:16:08.460 に答える
0

viewDidLoad メソッドから実行すると機能するが、アクションをボタンに接続すると機能しないと言うので、アクションを適切に開始するボタンを接続していないように思えます。

IBでボタンを正しく接続していますか?

アクションやアウトレットとして接続していますか?

...または、プログラムでボタンを作成しているだけですか?

于 2012-10-06T23:40:03.257 に答える