Tôi muốn sử dụng phiên bản tùy chỉnh của hình ảnh phụ kiện tiết lộ tiêu chuẩn trong UITableView của tôi. Tôi có thể làm cái này như thế nào? Tôi hy vọng rằng phân lớp UITableViewCell là không cần thiết cho một cái gì đó cơ bản này.Làm cách nào để tùy chỉnh hình ảnh tiết lộ phụ kiện trong UITableViewCell?
Trả lời
Bạn sẽ cần phải tạo chế độ xem tùy chỉnh và gán nó cho thuộc tính accessoryView
của đối tượng UITableViewCell
. Một cái gì đó như:
myCell.accessoryView = [[ UIImageView alloc ]
initWithImage:[UIImage imageNamed:@"Something" ]];
Tôi chạy vào cùng một vấn đề như Greg - quan điểm phụ kiện không theo dõi (nếu bạn sử dụng một UIImageView)
Tôi giải quyết nó như thế này:
UIImage * image = [ UIImage imageNamed:@"disclosure-button-grey.png" ] ;
UIControl * c = [ [ UIControl alloc ] initWithFrame:(CGRect){ CGPointZero, image.size } ] ;
c.layer.contents = (id)image.CGImage ;
[ c addTarget:self action:@selector(accessoryTapped:) forControlEvents:UIControlEventTouchUpInside ] ;
cell.accessoryView = c ;
[ c release ] ;
Tại sao không chỉ sử dụng một UIButton đơn giản với hình ảnh, thay vì sử dụng nội dung lớp? –
Tôi cảm thấy như tôi phải đã thử điều đó và nó không hoạt động vì một lý do nào đó? Nhưng chắc chắn, hãy thử với UIButton trước tiên ... – nielsbot
Khi sử dụng hình ảnh tùy chỉnh, vị trí có thể thay đổi và người dùng có thể gặp sự cố khi nhấp vào vì khung hình của nó có thể nhỏ. tốt nhất là thêm nút xem phụ ở phía trên chế độ xem phụ kiện, theo cách này bạn có thể xử lý kích thước và vị trí. – david72
- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UIImage *indicatorImage = [UIImage imageNamed:@"Arrow.png"];
cell.accessoryView =[[[UIImageView alloc] initWithImage:indicatorImage] autorelease];
return cell;
}
tôi cũng làm điều này với mã trợ giúp được cung cấp ở trên
LƯU Ý: KHÔNG đặt ô tùy chỉnh thành thẻ: 0. Thẻ đó được dành riêng cho chế độ xem nhãn văn bản. Nếu bạn đặt thẻ trong Bảng phân cảnh Xcode, , bạn phải đặt thẻ cho các chế độ xem/nhãn tùy chỉnh thành 1 hoặc cao hơn.
Note của Apple dụ:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath (NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
UILabel *label;
label = (UILabel *)[cell viewWithTag:1];
label.text = [NSString stringWithFormat:@"%d", indexPath.row];
label = (UILabel *)[cell viewWithTag:2];
label.text = [NSString stringWithFormat:@"%d", NUMBER_OF_ROWS - indexPath.row];
return cell;
}
tôi muốn làm điều đó như sau:
UIImageView *chevronImgVw = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"chevron_accessory_vw_img.png"]];
chevronImgVw.frame = CGRectMake(cell.accessoryView.frame.origin.x, cell.accessoryView.frame.origin.y, 10, 20);
cell.accessoryView = chevronImgVw;
hãy, hãy thử điều này trước khi bạn xuống bỏ phiếu! Bởi vì tại thời điểm này nó có 2 upvotes và 2 downvotes!
Tôi đã thử mã ở trên và dường như không hoạt động nữa, có thể do tuổi của bài đăng này nên tôi sẽ ném xuống dòng đã cho tôi chế độ xem phụ kiện tùy chỉnh.
[cell setAccessoryView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrowBtn"]]];
Hy vọng ai đó thấy điều này hữu ích.
Tom, câu trả lời được chấp nhận trên mục này chính xác là giống nhau. Tôi đang thiếu gì ở đây? – jpm
Có một số nice example from Apple cho biết cách sử dụng UIControl
để đáp ứng loại tùy chỉnh AccessoryView này.
Ghi đè - (void)drawRect:(CGRect)rect
trong UIControl không phải là cách dễ nhất, nhưng mang đến cho bạn nhiều sự linh hoạt để tạo kiểu cho các chế độ xem phụ kiện đẹp mắt.
- 1. Phụ kiện tùy chỉnh UITableViewCell - nhận hàng phụ kiện
- 2. Phụ kiện iOS UITableViewCell ở bên trái?
- 3. Làm thế nào để có được Xem phụ kiện trong suốt trong UITableViewCell? (w/Ảnh chụp màn hình)
- 4. Thay đổi hình ảnh cho một nút tiết lộ chi tiết (Xcode 4.2)
- 5. Nghe sự kiện tiết lộ mật khẩu
- 6. Lỗi UITableViewCell tùy chỉnh
- 7. Làm cách nào để tạo UITableViewCell tùy chỉnh bằng nib trong Xcode 4?
- 8. Sai chiều rộng nội dung trong UITableViewCell tùy chỉnh?
- 9. Xoay UITableViewCell tùy chỉnh
- 10. Tác vụ VoiceOver tùy chỉnh trong UITableViewCell
- 11. Tập hợp loại phụ kiện UITableViewCell, nhưng accessoryView là không. Làm cách nào để thiết lập phụ kiện backgroundColor?
- 12. Làm cách nào để tái sử dụng/tái chế phần tử tùy chỉnh như uitableviewcell?
- 13. hàng đường dẫn không được chuẩn bị cho segue để tiết lộ chi tiết
- 14. Tạo tùy chỉnh UITableViewCell trong một Storyboard
- 15. Cách hiển thị chỉ báo tiết lộ trong khi các ô đang ở chế độ chỉnh sửa?
- 16. Làm cách nào để thêm biểu tượng hình ảnh cho nút tùy chỉnh trong triển vọng
- 17. Làm cách nào để thêm trường hình ảnh tùy chỉnh vào một danh mục trong Magento?
- 18. Làm cách nào để xử lý sự kiện chạm trên UILabel dưới dạng subview của UITableViewCell?
- 19. Tiết lộ mô hình mô hình khó khăn
- 20. Tùy chỉnh nib Chiều cao UITableViewCell
- 21. Làm thế nào để tạo UITableViewCell tùy chỉnh được rút kích thước chính xác?
- 22. Độ rộng của nội dung UITableViewCell với một loại phụ kiện nhất định
- 23. tùy chỉnh phương pháp tiết kiệm trên mô hình - django
- 24. Highcharts: Thêm nút hình ảnh tùy chỉnh
- 25. nút Tiết lộ hiển thị một menu
- 26. Nhãn căn chỉnh trong UITableViewCell
- 27. Làm thế nào để viết tùy chỉnh siêu dữ liệu để hình ảnh PNG trong iOS
- 28. Làm cách nào để thay đổi kiểu tiết lộ khi người dùng vào chế độ chỉnh sửa của UITableView?
- 29. Hình ảnh tùy chỉnh nút hủy UISearchbar
- 30. Tùy chỉnh biểu mẫu Django với phụ kiện RadioSelect
Nếu tôi làm điều này, tôi nhận thấy rằng phương pháp UITableViewDelegate - [tableView: accessoryButtonTappedForRowWithIndexPath:] không còn được gọi. Đó là hành vi mong đợi? Có cách nào để giữ phương pháp này hoạt động không? –
Có một số giải thích khác tại http://stackoverflow.com/questions/869421/using-a-custom-image-for-a-uitableviewcells-accessoryview-and-having-it-respond – jarnoan
là có thể thực hiện điều đó bằng cách sử dụng UIApperance proxy trên UITableViewCell? – Claus