iOS 处理方法中的可变参数

## iOS 处理方法中的可变参数

      最近写了一个自定义的对话框的demo,想模仿系统的UIAlertView的实现方式,对处理可变参数的时候,遇到了小问题,于是谷歌了一下,写下了处理问题的方法,记录下来,以备后需。


代码实现

- (instancetype)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ... {
    if (self = [super init]) {
        self.title = title;
        self.delegate = delegate;
        self.frame = CYScreen.bounds;
        // 获取可变参数的值
        if (![self isBlankString:cancelButtonTitle]) {
            [self.buttonTitles addObject:cancelButtonTitle];
        }
        NSString *str;
        va_list list;
        if(otherButtonTitles)
        {
            // 1.取得第一个参数的值
            CYLog(@"%@", otherButtonTitles);
            [self.buttonTitles addObject:otherButtonTitles];
            // 2.从第2个参数开始,依此取得所有参数的值
            va_start(list, otherButtonTitles);
            while ((str = va_arg(list, NSString *))){
                CYLog(@"%@", str);
                [self.buttonTitles addObject:str];
            }
            va_end(list);
        }
        CYLog(@"%@", self.buttonTitles);
    }
    return self;
}

方法调用

- (IBAction)showDialog {
    CYAlertView *alert = [[CYAlertView alloc]initWithTitle:@"我的提示" message:@"消息正文" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", @"XXX", @"YYY", nil];
    alert.containerView = [self createDemoView];
    [alert show];
}

打印结果

2015-07-06 15:54:26.422 CYCustomAlertView[358:42937] 确定
2015-07-06 15:54:26.424 CYCustomAlertView[358:42937] XXX
2015-07-06 15:54:26.424 CYCustomAlertView[358:42937] YYY
2015-07-06 15:54:26.425 CYCustomAlertView[358:42937] (
    取消,
    确定,
    XXX,
    YYY,
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值