0

データをロードしようとしている TableView があります。表示からNSLog、データは正しく存在しています。ただし、次のメソッドは呼び出されていません。たとえば、NSLogコメントがまったく表示されません。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];    
    // UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
}
NSString *cellValue = [listOfStates objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
return cell; 
NSLog(@"Passed: cellForRowAtIndexPath");

}

同様に、init も実行されていません。存在する場合、initは常に実行されていましたか?

- (id)init { 
    if ((self = [super init])) {
    listOfStates = [[NSMutableArray alloc] init];
    stateName = [[NSString alloc] init];
    NSLog(@"INIT StateName %@", stateName);
    }
return self;
 NSLog(@"Passed: init");
}

何か案は?

4

3 に答える 3

1

tableView:cellForRowAtIndexPath:セルが必要なときにデータ ソースのテーブル ビューによって呼び出されます。これは、セルが最初に表示されたとき、またはユーザーがスクロールしてセルが表示されたときのいずれかです。

「プレーンな」initメソッドではなく、UITableViewが使用しinitWithFrame:style:、UITableViewController(オーバーライドしようとしているinitが明確ではなかった)が使用するため、initメソッドは呼び出されていません。initWithStyle:カスタムセットアップを行いたい場合は、これらのメソッドをオーバーライドする必要があります

他の回答が述べたように、 return ステートメントの後に置くものは決して実行されません

于 2012-07-14T09:12:05.730 に答える
1

return の後に置くNSLogと、メソッドを終了し、 NSLog は呼び出されません。return を呼び出すたびに、そのメソッドが終了します。

于 2012-07-14T08:49:46.357 に答える
0

あなたの質問に答えるには:tableView:cellForRowAtIndexPath:テーブルビューからデータソースメソッドとして呼び出されます。それを呼び出すには、tableviews データソース プロパティを を実装するクラスに設定する必要がありますtableView:cellForRowAtIndexPath:。一方、sujith は正しい:NSLogの後には呼び出されませんreturn

于 2012-07-14T08:55:09.243 に答える