0

エラーをスローする形や色を変更したいときに、iPhoneのセグメントコントローラーに問題があります

  #import "BIDViewController.h"
#import "BIDQuartzFunView.h"
#import "BIDConstants.h"


@interface BIDViewController ()

@end

@implementation BIDViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)changeColor:(id)sender {
    UISegmentedControl *control = sender;
    NSInteger index = [control selectedSegmentIndex];

    BIDQuartzFunView *funView = (BIDQuartzFunView *)self.view;

    switch (index) {
        case kRedColorTab:
            funView.currentColor = [UIColor redColor];
            funView.useRandomColor = NO;
            break;
        case kBlueColorTab:
            funView.currentColor = [UIColor blueColor];
            funView.useRandomColor = NO;
            break;
        case kYellowColorTab:
            funView.currentColor = [UIColor yellowColor];
            funView.useRandomColor = NO;
            break;
        case kGreenColorTab:
            funView.currentColor = [UIColor greenColor];
            funView.useRandomColor = NO;
            break;
        case kRandomColorTab:
            funView.useRandomColor = YES;
            break;
        default:
            break;
    }
}

- (IBAction)changeShape:(id)sender {
    UISegmentedControl *control = sender;
    [(BIDQuartzFunView *)self.view setShapeType:[control selectedSegmentIndex]];
    if ([control selectedSegmentIndex] == kImageShape)
        _colorControl.hidden = YES;
    else
        _colorControl.hidden = NO;
}

@end

エラー:

-[UIView setShapeType:]: インスタンス 0x767a0a0 に送信された認識されないセレクター 2013-05-14 22:42:15.836 QuartzFun[1014:c07] *キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: '-[UIView setShapeType:]:インスタンス 0x767a0a0' に送信された認識されないセレクター

4

1 に答える 1

0

これではなく、BIDQuartzFunView が適切に初期化されていないと思います。

(BIDQuartzFunView *)self.view

これを試して:

BIDQuartzFunView *funView = [[BIDQuartzFunView alloc] initWithFrame:self.view.frame]];

次に、setShapeView に応答する必要があります。

[funview setShapeView:[control selectedSegmentIndex];

また、BIDQuartzFunView をビューに追加することを忘れないでください。

[self.view addSubview:funView];
于 2013-05-15T03:23:59.643 に答える