0

CPPicker を使用してアプリケーションに水平ピッカーを実装し、タグを使用して 2 つのピッカーのどちらについて話しているかを判断しています。

     // Picker creation
     CPPickerView *pickerView = [[CPPickerView alloc] initWithFrame:CGRectMake(100, 5, 150, 40)];
     pickerView.dataSource = self;
     pickerView.delegate = self;
     pickerView.peekInset = UIEdgeInsetsMake(0, 40, 0, 40);
     [pickerView reloadData];
     pickerView.showGlass = YES;
     [cell addSubview:pickerView];

    if (indexPath.section == 0) {
        pickerView.tag = 0;
    }
    else if (indexPath.section == 1) {
        pickerView.tag = 1;
    }

    return cell;

その後、タグをチェックして pickerView のタイトルを指定します。ただし、タグに対して 0 しか読み取らないため、両方のピッカーの値は同じです。

- (NSString *)pickerView:(CPPickerView *)pickerView titleForItem:(NSInteger)item {
    NSString *title = nil;

    if (pickerView.tag == 0) {
        title = [NSString stringWithFormat:@"%d", (200 + (item * 20))];
    }
    else if (pickerView.tag == 1) {
        title = [NSString stringWithFormat:@"%d", item + 1];
    }

    return title;
}

ここで何が間違っていますか?

4

2 に答える 2

1

メソッドまたは関数でピッカー ビューを宣言していますか。これは、別のメソッドまたは関数では表示されないことを意味します。プロパティにするか、少なくともクラス拡張でインスタンス変数として宣言する必要がある場合があります。

タグのデフォルト値は 0 です。タグ カウントを 1 から開始することをお勧めします。そうすると、タグが別の場所で設定されているか、正しく設定されていないかがわかります。

if (indexPath.section == 0) {
    pickerView.tag = 1;
}
else if (indexPath.section == 1) {
    pickerView.tag = 2;
}
于 2013-04-08T01:38:12.707 に答える
0

ビューに追加した後、タグを pickerView に設定しています。ビューの pickerView は、元のインスタンスのコピーになりました。タグ コードを addSubView 呼び出しの上に移動します。

于 2013-04-08T01:58:55.443 に答える