码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 处理方法中的可变参数

时间:2015-07-06 17:58:41      阅读:202      评论:0      收藏:0      [点我收藏+]

标签: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,
)

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS 处理方法中的可变参数

标签:ios   可变参数   方法   

原文地址:http://blog.csdn.net/chenyblog/article/details/46776231

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!