2009-08-24 30 views

Trả lời

0

Sử dụng phương pháp UITableViewCell

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 

Thông tin here.

+0

Có lẽ phương pháp sau đây phù hợp hơn? http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableViewCell/setHighlighted:animated: –

+0

phương pháp nào? liên kết doesnt đi đến bất kỳ phương pháp cụ thể – Daniel

+1

O nếu ound nó, mà một trong những điểm nổi bật và không chọn nó, tôi đoán nếu thats tất cả các asker muốn sau đó chắc chắn thats phù hợp hơn – Daniel

6

Hãy thận trọng khi sử dụng phương pháp này, vì chọn hàng theo cách này là một cái gì đó Apple suggests against làm để hiển thị trạng thái "đã chọn".

Thay vào đó, hãy xem xét đặt thuộc tính accessoryType của ô thành một cái gì đó như UITableViewCellAccessoryCheckmark.

+0

Tôi đang cố gắng để tái sử dụng giao diện người dùng Apple khi bạn thêm/chỉnh sửa sự kiện trong ứng dụng Lịch và đặt ngày/giờ bắt đầu và kết thúc. Tôi đã thấy các nhận xét về quy tắc đánh dấu ở nơi khác, nhưng không rõ liệu nó có áp dụng trong trường hợp này hay không (bảng được sử dụng để bố trí các thành phần thay vì trình bày danh sách dữ liệu). – user119857

+0

Đó là một điểm thú vị.Trong trường hợp này, họ không cần phải có một subview cho mỗi Bắt đầu và Kết thúc kể từ khi cả hai đều đại diện cho cùng một loại dữ liệu, sửa đổi bởi cùng một loại UIPickerView. Vì vậy, đó sẽ đại diện cho một sử dụng khôn ngoan. Họ có khả năng sử dụng selectRowAtIndexPath của UITableView: hoạt hình: scrollPosition: phương pháp ... xem http://tinyurl.com/yd9zs65 –

1

Chắc chắn xem hết. Tôi chắc rằng bạn có lý do chính đáng, nhưng hãy xem kỹ tài liệu Hướng dẫn Giao diện Con người mà Apple cung cấp. Ứng dụng bị từ chối vì không bỏ chọn các hàng trong bảng. Tôi khuyến khích bạn tìm phần thích hợp của HIG và xem Apple cung cấp bất kỳ đề xuất nào.

41
-(void)viewWillAppear:(BOOL)animated { 
    // assuming you had the table view wired to IBOutlet myTableView 
    // and that you wanted to select the first item in the first section 
    [myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 
          animated:NO 
         scrollPosition:UITableViewScrollPositionTop]; 
} 

Tôi đang sử dụng kỹ thuật này để chọn một trong hai UITableViewCells để người dùng biết mà tế bào một UIDatePicker bên dưới bảng xem nó sẽ có hiệu lực. Kỹ thuật này được Apple sử dụng trong ứng dụng lịch khi bạn tạo sự kiện mới và đặt ngày.

+1

1. điều này không làm việc cho tôi. 2. Apple nói bạn nên sử dụng dấu kiểm để chỉ trạng thái lựa chọn của một mục. –

3

Bạn nên đặt nó trong viewWillAppear.

[myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 
         animated:NO 
        scrollPosition:0]; 

Nếu bạn cố gắng chọn nó trong cellForRowAtIndexPath:, khi đó, nó sẽ không theo kiểu được yêu cầu.

0

Đôi khi, khi bạn không ở trong một UIViewController, bạn không có viewWillAppear và đôi khi, bạn đã tạo UITableView theo chương trình.

Các giải pháp dễ dàng là để thực hiện phương pháp này delegate:

- (void)tableView:(UITableView *)tableView 
     willDisplayCell:(UITableViewCell *)cell 
     forRowAtIndexPath:(NSIndexPath *)indexPath { 

    if (self.selectedIndex == indexPath.row) { 
     cell.selected = YES; 
    } 
} 

Nó không hoạt động trong cellForRowAtIndexPath vì các tế bào vẫn chưa được hiển thị. và phương thức setSelected được gọi ngay khi phương thức này được hiển thị.

1

Sử dụng mã này để chọn tế bào theo mặc định trong xem bảng, indexPath có thể thay đổi tùy theo nhu cầu của bạn

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0]; 
    [theTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom]; 
} 
Các vấn đề liên quan