2009-09-21 35 views

Trả lời

31

Câu trả lời trước đã đóng, không hoàn toàn biên dịch. Dưới đây là những gì bạn thực sự muốn:

// Info button 
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton]; 
+0

Làm cách nào để thực hiện phương thức "showInfoView" mà bạn đã chỉ ra? – Shawn

+0

Shawn, chỉ có - (void) showInfoView: (id) người gửi {ở nơi khác trong quá trình triển khai của bạn. Nếu không có: ở cuối phương thức, không có đối số nào được chuyển vào và bạn có thể thực hiện mà không có người gửi: (id). – quantumpotato

0

Bạn sẽ có thể thêm nút loại "Ánh sáng thông tin" vào navigationItem của bộ điều khiển chế độ xem mà UINavigationController hiện đang hiển thị. Nội dung như thế này có thể có trong mã điều khiển chế độ xem của bạn:

- (void) viewDidLoad { 
    UIButton * info = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
    // set your button's target and selector for whatever action here. 
    self.navigationItem.rightBarButtonItem.customView = info; 
} 
+0

Kevlar, Vui lòng sửa đổi câu trả lời của bạn .. buttonType là thuộc tính chỉ đọc. Bạn không thể đặt nó! – prakash

+0

xấu của tôi, tôi đã đi từ bộ nhớ và không có tài liệu trước mặt tôi; đang thay đổi ngay bây giờ. – Kevlar

3

Có rò rỉ bộ nhớ trong câu trả lời ở trên. Bạn nên sử dụng "autorelease" để tránh nó. Tôi đã cố gắng chỉnh sửa câu trả lời nhưng tôi đã không thành công cho đến nay.

// Info button 
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease]; 

ĐÂY LÀ CÁCH ĐÚNG ĐỂ LÀM THẾ NÀO.

+2

Hành động chính xác sẽ không phải là chỉnh sửa câu trả lời nhưng để đăng câu trả lời của riêng bạn * với phiên bản của giải pháp * hoặc, khi bạn nhận được 50 danh tiếng, để nhận xét về câu trả lời để người đăng có thể sửa nó. Các nhận xét không có giải pháp được đăng dưới dạng câu trả lời có thể bị xóa. Cuối cùng, không có "câu trả lời ở trên" vì vị trí của các câu trả lời phụ thuộc vào tab sắp xếp được sử dụng để xem trang, phiếu bầu và liệu câu trả lời có được chấp nhận hay bị xóa hay không. Tốt hơn là hãy tham khảo câu trả lời hoặc nhận xét trên trang theo tên của người đăng. –

+0

cảm ơn. không biết điều đó! –

0

Bạn cũng có thể sử dụng mục tiêu và công cụ chọn của mục nút thanh hiện tại cho nút thông tin của mình.

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self.barButtonItem.target action:self.barButtonItem.action forControlEvents:UIControlEventTouchUpInside]; 
self.barButtonItem.customView = infoButton; 

Bằng cách này, bất kỳ hành động hoặc phân đoạn nào được kết hợp với mục nút thanh của bạn sẽ được chuyển sang nút thông tin của bạn.

Các vấn đề liên quan