2009-06-20 15 views
16

Một UIActionSheet được initalized với:NSArray riêng vào một danh sách các loại NSString đối tượng

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Title" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil 
otherButtonTitles:@"Button1", @"Button2", nil]; 

Tôi cố gắng để vượt qua một NSArray vào "otherButtonTitles" tin nhắn.

tôi đã cố gắng để vượt qua một NSArray sử dụng:

otherButtonTitles:[array] 

nhưng tin nhắn được mong đợi một danh sách các NSStrings.

Cách duy nhất tôi có thể nghĩ đến việc phá vỡ một NSArray thành một tập hợp các NSStrings là bằng cách sử dụng componentsJoinedByString nhưng nó mang lại cho tôi một danh sách được phân cách bằng dấu phẩy là một NSString duy nhất.

Điểm đúng hướng sẽ được đánh giá cao.

+0

Wow ... câu hỏi hay! Có lẽ sử dụng NSInvocation điều này có thể bằng cách nào đó? –

Trả lời

16

Phương pháp đó có các biến thể. Không có một cách thực sự dễ dàng để thực hiện chuyển đổi mà bạn mô tả, và nó chắc chắn không đáng để thử trong trường hợp này. Đây chỉ là một phương pháp tiện lợi.

Chỉ cần sử dụng -init và cấu hình tất cả mọi thứ với accessors (-setDelegate:, -addButtonWithTitle:, -setCancelButtonIndex:, vv)

+0

Xem thêm câu trả lời của Brad Smith về việc đặt hàng nút khi sử dụng phương pháp "addButtonWithTitle:" (nhưng lưu ý rằng bạn * không * cần phải phân lớp UIActionSheet để sử dụng nó; chúng đều là các phương thức công khai): http://stackoverflow.com/questions/1262205/uiactionsheet-addbuttonwithtitle-doesnt-add-buttons-in-the-right-order –

4

Thật không may, you can't do this trong Mục tiêu-C.

+0

Xem http://www.cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html –