ios - otherbuttontitles,如何取值

时间:2014-01-23 22:10:43

标签: ios arguments uialertview

我创建了一个自定义视图,它具有与UIAlertView完全相同的功能。它还具有与UIAlertView相同的实例方法。我看看文档,这里是方法声明“ - (id)initWithTitle:(NSString *)标题消息:(NSString *)消息委托:(id)委托cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *) otherButtonTitles,......“

所以我想知道在方法实现中,我怎么知道返回了多少个按钮并在我的自定义视图中获取它们的标题。

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以通过va_list获得其他标题。参数otherButtonTitles将是列表中的第一个对象,您可以使用va_arg()遍历列表,直到遇到nil,从而终止列表。

以下是代码:

- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ...
{
    self = [super init];

    if (self)
    {
        va_list args;
        va_start(args, otherButtonTitles);

        NSMutableArray *buttonTitlesArray = [NSMutableArray new];

        while (otherButtonTitles != nil)
        {
            [_buttonTitles addObject:otherButtonTitles];
            otherButtonTitles = va_arg(args, NSString *);
        }

        // otherButtonTitles now contains all of your button titles
        // Finish configuration of your view here
    }
    return self;
}