Hàm tạo của UIAlertSheet nhận tham sốButtonTitles khác dưới dạng danh sách varg. Tôi muốn chỉ định các tiêu đề nút khác từ NSArray thay thế. Điều này có thể không?Sử dụng NSArray để chỉ định các phụ đề khác?
tức là tôi phải làm điều này:
id alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: button1Title, button2Title, nil];
Nhưng vì tôi là tạo ra danh sách các nút có sẵn tại thời gian chạy, tôi thực sự muốn một cái gì đó như thế này:
id alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: otherButtonTitles];
Ngay bây giờ, tôi tôi nghĩ rằng tôi cần phải có một cuộc gọi riêng biệt để initWithTitle:
cho 1 mục, 2 mục và 3 mục. Như thế này:
if ([titles count] == 1) {
alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: [titles objectAtIndex: 0], nil];
} else if ([titles count] == 2) {
alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: [titles objectAtIndex: 0], [titles objectAtIndex: 1], nil];
} else {
// and so on
}
Đó là nhiều mã trùng lặp, nhưng nó thực sự có thể hợp lý vì tôi có tối đa ba nút. Làm thế nào tôi có thể tránh điều này?
Không chắc chắn lý do tại sao nó hoạt động cho bạn, nhưng tôi phải làm "[title count] - 1" để nó hoạt động cho tôi, iOS 7. – Micah
[alert numberOfButtons] -1 là một cách khác để thiết lập chỉ mục của nút hủy – Keith
Nhỏ lưu ý: Sử dụng các tên bạn đã thiết lập ở đây, tôi nghĩ 'sheet.cancelButtonIndex' nên là' alert.cancelButtonIndex', phải không? – Matt