Tôi có một trang tính có các tùy chọn khác nhau tùy theo hoàn cảnh. Có đủ tiêu đề nút khác nhau mà tôi muốn xây dựng một mảng của những tiêu đề nút đầu tiên, nhưng tôi không thể tìm ra cách để chuyển đổi đó thành định dạng varargs.Làm thế nào tôi có thể gửi một chuỗi các chuỗi vào một phương thức init varia của UIActionSheet?
tôi muốn làm một cái gì đó như thế này:
NSMutableArray *buttonTitles = [NSMutableArray array];
if (condition1) {
[buttonTitles addObject: @"Do action 1"];
}
if (condition2) {
[buttonTitles addObject: @"Do action 2"];
}
if (condition3) {
[buttonTitles addObject: @"Do action 3"];
}
if (condition4) {
[buttonTitles addObject: @"Do action 4"];
}
UIActionSheet *actionSheet = [[[UIActionSheet alloc] initWithTitle: nil delegate: self cancelButtonTitle: @"Cancel" destructiveButtonTitle: nil otherButtonTitles: buttonTitles] autorelease];
Bây giờ rõ ràng là nếu tôi đã phải tôi có thể làm một cái gì đó giống như thay vì điều này:
UIActionSheet *actionSheet = nil;
if (condition1 && condition2 && condition3 && condition4) {
actionSheet = [[[UIActionSheet alloc] initWithTitle: nil delegate: self cancelButtonTitle: @"Cancel" destructiveButtonTitle: nil otherButtonTitles: @"Do action1", @"Do action2", @"Do action3", @"Do action 4", nil] autorelease];
} else if (condition1 && condition2 && condition3 && !condition4) {
actionSheet = [[[UIActionSheet alloc] initWithTitle: nil delegate: self cancelButtonTitle: @"Cancel" destructiveButtonTitle: nil otherButtonTitles: @"Do action1", @"Do action2", @"Do action3", nil] autorelease];
}
// else ...
// about 14 other cases!
Nhưng đó sẽ là khủng khiếp. Bất cứ ai biết một số cú pháp cú pháp tốt đẹp để giúp tôi ra?
EDIT: Nó đã được gợi ý rằng tôi sử dụng addButtonWithTitle
, mà trên mặt của nó sẽ rất tốt, tiếc là nó này đặt các nút bổ sung sau khi nút hủy, mà không phải là mong muốn.
Tôi tin rằng đây là lỗi với mã của Apple kể từ khi tài liệu của họ trên addButtonWithTitle
trạng thái:
// adds a button with the title. returns the index (0 based) of where it was added. buttons are displayed in the order added except for the
// destructive and cancel button which will be positioned based on HI requirements. buttons cannot be customized.
yêu cầu HI (hướng dẫn Human Interface riêng của Apple) ủng hộ vào nút hủy dưới tất cả các tùy chọn khác, vì vậy tôi muốn nói của Apple hơi say lên. Tất nhiên, điều đó không thực sự giúp tôi, vì vậy tôi trở lại để cố gắng chuyển đổi giữa một NSArray và một varargs, mà tôi vẫn không biết làm thế nào để làm.
Tôi nghĩ rằng điều này đã hiệu quả, nhưng tôi đã tìm thấy một số vấn đề với nó, hãy xem chỉnh sửa. –
Vui lòng kiểm tra chỉnh sửa. –
Điều này đã hiệu quả. Có vẻ như không có bất kỳ nhu cầu để gây rối với bất kỳ tiêu đề phụ mặc dù. –