2

私が達成しようとしている機能は、最初にUITableView完全に表示されている2つの行を表示していることです。次にdidSelectRowAtIndexpath:、にを追加しnumberOfRowsます。これには、と必要なデータを追加しUITableViewた後にリロードします。UITableViewnumberOfRows

私の問題は、numberOfRowsInSection:(私がチェックした、正しく渡されている)の新しい行数を渡していますが、cellForRowAtIndexpath:その後は2回しか呼び出されないことです。これは、前のnumberOfRows値です。

私のコード:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.currentSubCategoryRows;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
   // My code for cell construction goes here
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
   [self.arrWithAdditionalValues addObjectsFromArray:[self.dictSubCategoriesLevel3 objectForKey:[NSString stringWithFormat:@"%d",rowOpened]]];
   self.currentSubCategoryRows += self.arrWithAdditionalValues.count;
            [tableView reloadData];
}

理由は何でしょうか?

どんな助けもいただければ幸いです!!!

4

3 に答える 3

6

私は解決策を見つけました。

UITableViewの行数に応じてサイズを変更していcellForRowAtIndexPath:たため、の次の部分はUITableView表示されず、表示されていない部分については呼び出されませUITableViewcellForRowAtIndexPath:

ご迷惑をおかけして申し訳ありません。

どうもありがとうございました!!!

于 2012-07-11T06:19:25.437 に答える
4

cellForRowAtIndexPath:描画に必要な場合にのみ呼び出されます。いつ呼び出されるかを制御せずに、そのメソッドを構築する必要があります。

于 2012-07-11T05:36:57.887 に答える
2

でテーブルをリロードしてみてくださいviewWillAppear

- (void)viewWillAppear:(BOOL)animated {
    [tableview reloadData];
    }
于 2012-07-11T05:33:32.917 に答える