1

アラートを表示するクラスに関数があると仮定しましょう。

- (void)showErrorWithTitle:(NSString *)title message:(NSString *)message
         cancelButtonTitle:(NSString *)cancelButtonTitle 
         otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION;

- (void)showErrorWithTitle:(NSString *)title message:(NSString *)message
         cancelButtonTitle:(NSString *)cancelButtonTitle 
         otherButtonTitles:(NSString *)otherButtonTitles, ... {

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                    message:message
                                                   delegate:nil
                                          cancelButtonTitle:cancelButtonTitle
                                          otherButtonTitles:nil];

    va_list args;
    va_start(args, otherButtonTitles);
    for (NSString *arg = otherButtonTitles; arg != nil; arg = va_arg(args, NSString*))
    {
        [alert addButtonWithTitle:arg];
    }
    va_end(args);

    [alert show];
    [alert release];
}

メソッドがこのメソッドを呼び出すラッパークラスがあります。私の問題は、このメソッドをどのように実装する必要があるかです。

この解決策は機能しません:

- (void)showErrorWithTitle1:(NSString *)title message:(NSString *)message 
          cancelButtonTitle:(NSString *)cancelButtonTitle 
          otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION;

- (void)showErrorWithTitle1:(NSString *)title message:(NSString *)message 
          cancelButtonTitle:(NSString *)cancelButtonTitle 
          otherButtonTitles:(NSString *)otherButtonTitles, ... {

    [[Someclass intance] showErrorWithTitle:title
                                    message:message
                          cancelButtonTitle:cancelButtonTitle
                          otherButtonTitles:otherButtonTitles, nil];
}

呼び出し:

[self showErrorWithTitle1:@"Hello"
                 message:@"Example"
       cancelButtonTitle:@"No"
       otherButtonTitles:@"Yes, Maybe", nil];
4

0 に答える 0