0

私は基本的にこの質問と同じ問題を抱えています。しかし、何だと思いますか?その質問には良い答えがありません。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    if([indexPath row] == 0){

        UITableViewCell* aCell = [tableView dequeueReusableCellWithIdentifier:@"SwitchCell"];
        if( aCell == nil ) {
            aCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"SwitchCell"];
            aCell.textLabel.text = @"Colors";
            aCell.selectionStyle = UITableViewCellSelectionStyleNone;

            /*
            UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
            aCell.accessoryView = switchView;
            [switchView setOn:NO animated:NO];
            [switchView addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
            */
            UIStepper *stepperView = [[UIStepper alloc] initWithFrame:CGRectZero];
            NSLog(@"The stepper is %@", stepperView);
            aCell.accessoryView = stepperView;
           [stepperView setMaximumValue:10];
           [stepperView setMinimumValue:0];
           [stepperView addTarget:self action:@selector(stepperChanged) forControlEvents:UIControlEventValueChanged];
           NSLog(@"The stepper is %@", stepperView);
       }
       return aCell;
    }

    UITableViewCell *aCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"SwitchCell"];

    NSString *s = @"foo";
    s = [s stringByAppendingFormat:@"%d", [indexPath row]];
    aCell.textLabel.text = s;

return aCell;

}

したがって、コードをコメントアウトされたコードに切り替えると、問題なく動作します (UISwitch が表示されます)。だから私がやろうとしたのは、UISwitchをUIStepperに置き換えることだけで、表示されません。私はobjective-cが嫌いです。

ああ、両方の printlines は、値が (null) であることを示しています。作った直後はヌル?

編集:iOS 5.0。答えは、これがなぜなのかに関係しているように感じます:

NSLog(@"%@", [[UISwitch alloc] init]);

null ではない

NSLog(@"%@", [[UIStepper alloc] init]);

無効です。

4

2 に答える 2

1

この方法で UIStepper を作成してみてください:

UIStepper* stepper = [[UIStepper alloc] init];
stepper.frame = CGRectMake(220, 10, 100, 10);
[cell.contentView addSubview: stepper];

これにより、ステッパーがテーブル ビュー セルの右側に配置されます。

そして、この関連する質問でこの回答を見つけました。

于 2013-06-15T21:33:57.540 に答える
0

コードは iOS 5.0 でコンパイルされましたが、シミュレーターは iPhone 4.3 用でした。したがって、iPhone は UIStepper が何であるかを知りませんでしたが、UISwitch が何であるかは知っていました。なぜクラッシュしなかったのか (これでかなりの時間を節約できたはずです) は謎です。

于 2013-06-15T22:26:33.607 に答える