1

アプリの起動時にテーブルビューの最初の行にチェックマークを付けるにはどうすればよいですか? 今アプリを起動すると、テーブルビューにいくつかの行があり、それらのいくつかをクリックすると、アクセサリがチェックマークに変わります。別のものをクリックすると、別のものにチェックマークが付き、前のチェックマークが消えます。したがって、アプリの起動時にテーブルビューの最初の行にチェックマークを付けてから、別の行をクリックすると「チェックマークを外す」および「チェックマークを付ける」新しい行など...

4

3 に答える 3

1

「checkedCell」に似た変数に整数を設定し、その値をデフォルトでセル0に設定しcellForRowAtIndexPath、セルがすでにチェックされているかどうかを確認し、そうでない場合はアクセサリを変更してチェックして変数を更新することができます。

-(void)viewWillAppear{
     currentCheckedCell = 0;
}

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    //
    // Create cells -- if indexpath.row is equal to current checked cell reload the table with the correct acessories.
    //
    static NSString *cellIdentifier = @"RootMenuItemCell";
    MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {

        cell = [[MyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
        NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:self options:nil];
        for (UIView *view in nibContents) {
            if ([view isMemberOfClass:[MyCell class]]) {
                cell = (MyCell *)view;
                break;
            }
        }

        //OTHER CELL CREATION STUFF HERE

        // cell accessory
        UIImage *accessory = [UIImage imageNamed:@"menu-cell-accessory-default.png"];
        UIImage *highlighted = [UIImage imageNamed:@"menu-cell-accessory-selected.png"];
        if(indexPath.row == currentCheckedCell){
            //DEFAULT ACCESSORY CHECK 
            // cell.accessoryType = UITableViewCellAccessoryCheckmark;

            UIImageView *accessoryView = [[UIImageView alloc] initWithImage:accessory highlightedImage:highlighted];
        }else{
             //DEFAULT ACCESSORY NONE 
            // cell.accessoryType = UITableViewCellAccessoryNone;
              UIImageView *accessoryView = [[UIImageView alloc] initWithImage:accessory highlightedImage:accessory];
         }
        [cell setAccessoryView:accessoryView];

    } 
return cell;
}

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
      //UPDATE SELECTED CELL & RELOAD TABLE
      currentCheckedCell = indexPath.row;
      [self.tableview reloadData];
}

また、私の例ではアクセサリにカスタム イメージを使用していることにも注意してください。@ACB が提供するリンクを確認すると、非常によく似た概念が見つかります。

于 2012-10-24T19:36:43.130 に答える
1

これらの投稿で提案されているオプションを試して、目的の c を使用して iphone のテーブル ビューにチェック マークを適用する方法を教えてください。 またはiPhone :UITableView CellAccessory チェックマーク

基本的に、辞書などを使用してチェックマークを追跡する必要があります。そして、viewDidLoadまたはinitメソッドで、最初のセルを辞書でチェックされているようにします。セルを描画している間は、辞書の対応するエントリがチェックされているかどうかを常に確認し、それに応じてチェックマークを表示します。ユーザーがセルをタップすると、ディクショナリの値がチェック/チェック解除に変更されます。

更新: これはサンプル コードです。

.h ファイルで、プロパティを次のように宣言します。

@property(nonatomic) NSInteger selectedRow;

次に、以下のコードを使用します。

- (void)viewDidLoad {
  //some code...

  self.selectedRow = 0; //if nothing should be selected for the first time, then make it as -1
  //create table and other things
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // create cell and other things here

    if (indexPath.row == self.selectedRow)
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // some other code..

    if (indexPath.row != self.selectedRow) {
       self.selectedRow = indexPath.row;
    }

    [tableView reloadData];
}
于 2012-10-24T19:36:55.800 に答える
1

あなたが使用することができます、

if (firstCellSelected)
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } 

firstCellSelectedメソッドにフラグを設定しviewDidLoadます。

于 2012-10-31T22:35:52.613 に答える