0

たぶんそれは似たような始まりですが、それは本当です。

まず、これが正しくフォーマットされていない場合は申し訳ありませんが、初めてこれを行います。私は長い間stackoverflowを使用してヘルプを見つけており、非常に役に立ちました(ありがとうございました)が、私自身の質問を投稿するのはこれが初めてです。この質問は何度も聞かれますが、[self.tableView reloadTable]を呼び出すと、メソッドnumberOfSectionsInTableViewとnumberOfRowsInSectionが呼び出されますが、cellForRowAtIndexPathは呼び出されません。

検索時に私が見たすべての答えは、次のバリエーションでした。

  1. tableViewはnil
  2. numberOfRowsInSectionは0です
  3. tableViewのデリゲート/データソースが設定されていません。これらのどれも私には当てはまらないので、他に何が間違っているのだろうかと思っています。

しかし、私にはわかりません。4.間違ったuiTableViewでreloadTableを呼び出します。またはそれは他のいくつかの誤りについてです。

これで、私のAPPはドロップボックスに似ています。最初にログインすると、TableViewにファイルリスト(ディレクトリを含む)が表示され[self.navigationController.view addSubview:toolBar]ます。また、[更新]ボタンをタッチすると、ビューの下部にツールバーが追加されました。 "、それは呼び出し[self.tableView reloadData]てうまく機能します。

次に、ディレクトリを選択すると、による新しいファイルリストテーブルが取得pushViewControllerされますself.navigationControllerが、今回は「更新」に触れると、ステートメント[self.tableView reloadData]はcellForRowAtIndexPathではなくnumberOfSections、numberOfRowsを呼び出します。

cellForRowが2回目に呼び出されない理由について何か考えはありますか?前もって感謝します。

FileListViewController.h
@interface FileListViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource>    

FileListViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (isDir) {       
        FileListViewController *fileListViewController = [[FileListViewController alloc] init];
        [self.navigationController pushViewController:fileListViewController animated:YES];
    }
}

- (void)refresh
{
    [Utilities refresh];//Utilities is my custom class.

    [self viewDidLoad];
    [self.tableView reloadData];
}

テーブルビューのセクションと行の戻り数が0ではありません。

NSLog(@"Calling reloadData on %@", self.tableView);「更新」に追加したとき:

- (void)refresh
{
    [Utilities refresh];//Utilities is my custom class.

    [self viewDidLoad];
    NSLog(@"Calling reloadData on %@", self.tableView);
    [self.tableView reloadData];
}

次に、CallingreloadDataonを返します。contentOffset:{0、0}>。デリゲート:FileListViewController、データソース:FileListViewController

4

1 に答える 1

1

手動でを呼び出さないでください[self viewDidLoad]。このメソッドはオーバーライドされるように設計されており、自動的に呼び出されます。詳細については、このドキュメントをお読みください。

于 2012-06-30T02:29:33.677 に答える