0

カスタム alertView を作成しようとしていますが、init 関数のオーバーライドに問題があります

- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ... {
    self = [super initWithTitle:title message:message delegate:delegate cancelButtonTitle:cancelButtonTitle otherButtonTitles:otherButtonTitles, nil];
    //custom initialisaton
    return self;
}

複数のタイトルがある場合、他のボタン タイトルを使用するにはどうすればよいですか?

4

1 に答える 1

1

できません-可変引数を関数から別の関数に渡すことはできません。


ただし、回避策があります。引数を自分で解析してから、それらを 1 つずつアラート ビューに追加できます。

self = [super initWithTitle:title
                    message:message
                   delegate:delegate
          cancelButtonTitle:cancelButtonTitle
          otherButtonTitles:nil];

va_list args;
va_start(args, otherButtonTitles);

NSString *title;
for (title = otherButtonTitles; title != nil; title = va_arg(args, NSString *)) {
        [self addButtonWithTitle:title];
}

va_end(args);
于 2013-08-25T12:47:11.903 に答える