Tài liệu của Apple nói rằng người gửi được chuyển đến hành động của NSMenuItem có thể được đặt thành một số đối tượng tùy chỉnh, nhưng tôi không thể tìm ra cách để làm điều này. Có phương pháp nào mà tôi không thấy ở đâu đó trong tài liệu không?Làm cách nào để đặt người gửi trên hành động của NSMenuItem?
10
A
Trả lời
22
Tôi không chắc chắn tài liệu bạn đang đề cập đến (liên kết sẽ trợ giúp).
Bạn có thể sử dụng phương pháp -setRepresentedObject:
của NSMenuItem
để kết hợp một đối tượng tùy ý với một mục trình đơn:
//assume "item" is an NSMenuItem object:
NSString* someObj = @"Some Arbitrary Object";
[item setRepresentedObject:someObj];
[item setAction:@selector(doSomething:)];
Sau đó, khi các mục trình đơn gửi thông điệp hành động của mình, bạn có thể có được các đối tượng:
- (IBAction)doSomething:(id)sender
{
NSLog(@"The menu item's object is %@",[sender representedObject]);
}
Tôi không thể nhớ ra đầu của tôi là tài liệu gì, nhưng tôi đã kết thúc việc tìm ra điều này. –
Câu hỏi ngớ ngẩn: Tại sao sử dụng representObject khi chúng ta chỉ có thể sử dụng tiêu đề NSMenuItem? –
Bạn không nên sử dụng tiêu đề vì chúng có thể được bản địa hóa. Tốt hơn hết nên sử dụng '-representedObject' vì nó được thiết kế để lưu trữ dữ liệu tùy ý. –