2010-01-12 28 views
12

Hi Tôi đang cố gắng để có uitableviewcell của tôi trả lại không hoạt động để người dùng không thể bấm nhưng chỉ đơn thuần nói dữ liệu trong tế bào. Tôi cố gắng làm như vậy với:Làm thế nào để thiết lập một uitableviewcell unclickable trên sdk iphone

UITableViewCell *cell = nil; 
if (indexPath.row < factsCount) { 
static NSString *FactsCellIdentifier = @"FactsCell"; 
cell = [tableView dequeueReusableCellWithIdentifier:FactsCellIdentifier]; 
[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

Tuy nhiên, ô vẫn có thể được nhấp và đánh dấu.

Cảm ơn sự giúp đỡ của bạn!

Trả lời

24

Để ngừng sử dụng chỉ là một số tế bào được chọn:

cell.userInteractionEnabled = NO; 

Cũng như ngăn ngừa sự lựa chọn, điều này cũng dừng tableView: didSelectRowAtIndexPath: được gọi cho các ô đã được đặt.

(nhưng lưu ý rằng nó sẽ vô hiệu hóa bất kỳ nội dung tương tác trong các tế bào - ví dụ như nút - cho trường hợp đó, thiết lập selectionStyle để UITableViewCellSelectionStyleNone và bỏ qua những tableView:. DidSelectRowAtIndexPath: gọi cho tế bào đó)

+2

Đây là câu trả lời hay nhất ở đây – barfoon

+0

Tôi nhận thấy rằng trong một số trường hợp, bạn phải đặt màu của văn bản thành màu đen (hoặc bất kỳ màu nào) thành ngăn nó chuyển sang màu xám, mà cell.userInteractionEnabled = NO; dường như tự động làm. Chỉ cần một cái gì đó để được nhận thức. – Ryan

+0

FYI nếu bạn có các nút trong ô của mình, chúng cũng sẽ bị tắt. Trong trường hợp đó bạn muốn câu trả lời của Ole – Jameo

11

Đặt ô của selectionStyle thành UITableViewCellSelectionStyleNone.

+0

tế bào vẫn còn nhấp được sau khi tôi thực hiện điều này. tôi đã cập nhật câu hỏi của mình bằng mã. – Atma

+3

Về mặt kỹ thuật, ô vẫn có thể nhấp nhưng người dùng không thấy lựa chọn. Tất nhiên, bạn cũng phải đảm bảo rằng thực thi 'tableView: didSelectRowAtIndexPath:' của bạn không làm gì cho ô cụ thể này. –

+1

Nếu bạn có một nút bên trong ô, đây là giải pháp hoạt động –

4

Điều này có thể được thực hiện với:

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

hoặc

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
4

Để vô hiệu hóa lựa chọn ô bạn có thể thực hiện phương pháp -(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath trong bảng điểm đại biểu và trở về con số không nếu bạn không muốn di động với cho NSIndexPath được chọn.
Như đã được chỉ ra trong các câu trả lời khác để tắt đánh dấu ô, bạn nên đặt thuộc tính selectionStyle thành UITableViewCellSelectionStyleNone.
Ngoài ra hãy chắc chắn rằng bạn thiết lập các thuộc một cách chính xác khi sử dụng lại tableviewcells

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