1

単純な問題だと思われる問題がありますが、解決策が見つかりません。

UITableView2 つのスタティックcells(ライトとダーク)を持つスタティックがあります。

ユーザーがセルの 1 つを選択すると、カスタム イメージを含む accessoriesView が表示されます。ユーザーが他のセルを選択すると、最初のセルの選択を解除してカスタムaccessoryViewを削除し、それがsecondCellに提供されるようにします。ユーザーが選択したセルに応じて、これを継続的に実行したいと考えています。

同様に重要なのは、このView Controllerのリロード中(を使用して)、「選択された」セルがaccessoryViewを維持することを確認する必要があることNSUserDefaultsです。

どうすればこれを行うことができますか?私はiOS開発にかなり慣れていません。

私のdidSelectRowのコードは次のとおりです。

 BOOL isSelected;

if (cell.isSelected) {
    UIImageView *dot = [[UIImageView alloc]initWithFrame:CGRectMake(165, 10, 14, 15)];
    dot.image=[UIImage imageNamed:@"check-white-hi.png"];
    [cell addSubview:dot];
    cell.accessoryView = dot;
    isSelected = YES;
}
else {
    cell.accessoryView = nil;
    isSelected = NO;
}

アクセサリ ビューをセルの 1 つから別のセルに削除する方法と、アプリのライフサイクル全体でこれを維持する方法を教えてください。

ありがとう

4

1 に答える 1

4

.h ファイルにプロパティを作成する

@property (nonatomic,retain)NSIndexPath * checkedIndexPath ;

.m ファイルで合成する

@synthesize checkedIndexPath;

このコードを didSelectRowAtIndexPath メソッドに記述します

if(self.checkedIndexPath)
{
   UITableViewCell* uncheckCell = [tableView
                                    cellForRowAtIndexPath:self.checkedIndexPath];
    uncheckCell.accessoryType = UITableViewCellAccessoryNone;
}
if([self.checkedIndexPath isEqual:indexPath])
{
    self.checkedIndexPath = nil;
}
else
{
   UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    self.checkedIndexPath = indexPath;
}
于 2014-03-31T13:23:39.387 に答える