2010-08-20 22 views

Trả lời

16

Bạn có thể đặt cell.detailTextLabel.numberOfLines = 2 để nhận 2 dòng trong đó. Tuy nhiên, tôi nghi ngờ UITableViewCell sẽ đặt ra các nhãn như bạn mong đợi trong trường hợp đó. Bạn có thể muốn phân lớp UITableViewCell và ghi đè -layoutSubviews để định vị nhãn theo cách bạn muốn. Bạn có thể gọi [super layoutSubviews] và sau đó chỉ cần tinh chỉnh vị trí của nhãn. Có thể bạn sẽ muốn sử dụng -[NSString sizeWithFont:constrainedToSize:lineBreakMode:] để tính kích thước chính xác cho nhãn văn bản chi tiết.

Ngoài ra, thay vì phân lớp UITableViewCell, bạn có thể thử thực hiện các chỉnh sửa trong -tableView:willDisplayCell:forRowAtIndexPath:, mặc dù nếu ô có quyết định cần bố cục lại thì các chỉnh sửa của bạn sẽ bị xóa. Tôi khuyên bạn nên đi với cách tiếp cận phân lớp.

Chỉnh sửa: BTW, với cách tiếp cận phân lớp, tất cả những gì bạn phải làm là thay đổi [UITableViewCell alloc] thành [MyTableViewCellSubclass alloc]. Vì bạn không giới thiệu các phương thức hoặc thuộc tính mới, biến này vẫn có thể vẫn được nhập là UITableViewCell và bạn sẽ không phải thay đổi bất kỳ mã nào khác.

+0

Cảm ơn bạn rất nhiều vì đã trả lời. Tôi subclassed UITableViewCell nhưng tôi tạo ra một ngòi để bố trí các nhãn thay vì làm nó lập trình. Điều đó có khác gì so với những gì bạn đang đề nghị tôi làm hay không. Dù sao cũng cảm ơn bạn. – mshaaban

+0

Tạo một nib là hoàn toàn tốt (mặc dù nếu bạn đang ở trên iOS 4.0 tôi khuyên bạn nên sử dụng 'UINib' để tối ưu hóa tải nib). Lợi ích của việc tinh chỉnh nhãn bằng cách sử dụng '-layoutSubviews' là bạn có thể tái sử dụng các thuộc tính' textLabel' và 'detailTextLabel' hiện có, nhưng bạn không cần phải sử dụng chúng. –

+0

'cell.detailTextLabel' trong các phiên bản nhanh gần đây bây giờ là tùy chọn để' cell.detailTextLabel.numberOfLines = 2' phải là 'cell.detailTextLabel! .numberOfLines = 2' –

3

Chi tiếtTextLabel là nhãn UILabel, quy tắc gói từ áp dụng giống như với nhãn bạn tạo.

http://developer.apple.com/iphone/library/documentation/uikit/reference/UILabel_Class/Reference/UILabel.html#//apple_ref/occ/instp/UILabel/lineBreakMode

EDIT: Chỉ cần nghĩ rằng, bạn cũng sẽ cần phải thay đổi chiều cao của tế bào nếu văn bản được vượt quá một số ngưỡng của dòng. có lẽ 2 hoặc 3 là okay.

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