1

私はStoryboardViewController(独自のカスタムサブクラスを使用)を持っており、そのinitWithCoderカスタムメソッドを使用して、独自のカスタムオブジェクトでビューを普及させたい(プログラムでこれを行う柔軟性を維持したい)。

が呼び出されるまでコードは正常に機能[self.view addSubview:button];し、その後、「NIBをバンドルでロードできませんでした」とクラッシュします。

私がやりたかったのは、ビューにUIButtonを追加することだけでした...

- (id)initWithCoder:(NSCoder*)aDecoder 
{
    if(self = [super initWithCoder:aDecoder]) 
    {
        [self initLoginForm];
    }
    return self;
}

-(void)initLoginForm
{

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(100, 170, 100, 30);
    [button setTitle:@"Login..." forState:UIControlStateNormal];
    [button addTarget:self action:@selector(handleLoginAttempt) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button]; 

}
4

1 に答える 1

2

viewDidLoadボタンをメソッドに配置してから、に追加してはどうでしょうかinitLoginForm

このようなもの:

-(void)viewDidLoad {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(100, 170, 100, 30);
    [button setTitle:@"Login..." forState:UIControlStateNormal];
    [button addTarget:self action:@selector(handleLoginAttempt) forControlEvents:UIControlEventTouchUpInside];
}

-(void)initLoginForm {

[self.view addSubview:button];

}

または、に追加してviewDidLoadから非表示にしてから、initLoginForm表示します。

于 2012-08-17T01:15:35.533 に答える