1

TableViewの各セルには、基本的に、そのセルのデータが読み込まれているかどうかを格納するブール変数があります。したがって、セルをタップすると、アクセサリの種類がUIActivityIndi​​catorに変わります。TableViewは正常に読み込まれますが、TableViewに戻ると、1つまたは2つのセルにデフォルトのDisclosureIndicatorがランダムにありません...何もありません

私が使用しているコードは内部にありますcellForRowAtIndexPath

 NSLog([entry isLoading] ? @"Yes" : @"No");
if ([entry isLoading]) {
    UIActivityIndicatorView *activityView =
    [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    [activityView startAnimating];
    [cell setAccessoryView:activityView];
}
else{
    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
}

コードをステップスルーしましたが、DisclosureIndicatorが表示されていないセルは、AccessoryDisclosureIndicatorに設定しているコードを実行しています...インジケーターがないセルがelseステートメントをトリガーしているため、何が起こっているのかわかりません。 thesetAccessoryType

ありがとう!

4

1 に答える 1

1

これを試して、

if ([entry isLoading]) {
    UIActivityIndicatorView *activityView =
    [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    [activityView startAnimating];
    [cell setAccessoryView:activityView];
    [cell setAccessoryType:UITableViewCellAccessoryNone];
}
else{
    [cell setAccessoryView:nil];
    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
}

ドキュメントによると、

AccessoriesView
このプロパティの値がnilでない場合、UITableViewCellクラスは、テーブルビューの通常の(デフォルト)状態のアクセサリビューに指定されたビューを使用します。これは、accessoryTypeプロパティの値を無視します。提供されるアクセサリビューは、フレームワークが提供するコントロールまたはラベル、あるいはカスタムビューにすることができます。アクセサリビューがセルの右側に表示されます。

accessoryViewしたがって、nil showに設定する必要がありますaccessoryType。そうしないと、無視されます。

于 2013-01-03T19:04:00.350 に答える