2014/05/23

[iOS][Objective-C]UIActionSheetのボタンを動的に増やす

キャンセルボタンを一番下にして、動的にボタンを追加するにはどうすればいいのだろうか?

UIActionSheet Class Referenceを読むと

- (id)initWithTitle:(NSString *)title delegate:(id < UIActionSheetDelegate >)delegate cancelButtonTitle:(NSString *)cancelButtonTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ...{

}
となっており、ボタンを追加するには、NSStringで設定しなければならない。

NSArrayに格納されているNSStringを設定するには結構やっかいな問題で、どうすればいいかなーっと思っていたら、stackoverflowのUse NSArray to specify otherButtonTitles?を読むとgoodな答えがあった。

UIActionSheet *alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: nil
destructiveButtonTitle: nil
otherButtonTitles: nil];

for( NSString *title in titles) {
[alert addButtonWithTitle:title];
}

[alert addButtonWithTitle:cancelString];

alert.cancelButtonIndex = [titles count];

via:Use NSArray to specify otherButtonTitles?
これ上通りに試しましたけど、すんごい便利。

0 コメント:

コメントを投稿