tôi có một số chế độ xem bảng trong ứng dụng của mình. Tôi quen thuộc với hành vi thông thường của các bảng, khi bạn chọn một hàng và tiến tới chế độ xem được đẩy, nó sẽ chuyển sang màu xanh, sau đó khi bạn quay lại, nó sẽ có màu xanh trong một giây sau đó chuyển sang màu trắng, để thông báo cho người dùng về hàng nào vừa được chọn.UITableView không giữ hàng được chọn khi trả lại
này đã làm việc một cách hoàn hảo cho đến thời gian gần đây khi tôi nhận thấy nó không còn làm các bit cuối cùng của những gì tôi đã mô tả: nó đã không ở lại màu xanh cho split rằng thứ hai ...
Tôi không biết tại sao, nhưng sau khi đọc một vài bài viết liên quan trên trang này tôi nhận ra rằng đoạn mã mà được gọi là trong phương thức "viewDidAppear". Điều gây nhầm lẫn cho tôi là tôi không ghi đè phương thức này, nhưng tôi đã thử nghiệm nó với một NSLog để chỉ cho tôi đường dẫn chỉ mục cho hàng mà nó sẽ bỏ chọn, trả về (null).
Vì vậy, điều này khiến tôi tin rằng bằng cách nào đó, tableView sẽ sớm bỏ chọn hàng.
Dưới đây là phương pháp didSelectRowForIndexPath tôi:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Selected row at index path: %@", indexPath);
//setting our view controller as what we want
TripDetails *detailViewController = [[TripDetails alloc] initWithNibName:@"TripDetails" bundle:nil];
self.tripsDetailViewController = detailViewController;
[detailViewController release];
// Pass the selected object to the new view controller.
NSLog(@"Passing trip...");
self.tripsDetailViewController.selectedTrip = [fetchedResultsController objectAtIndexPath:indexPath];
//Hide the bottom bar on pushed view
tripsDetailViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:tripsDetailViewController animated:YES];
}
Any help is appreciated rất nhiều, cảm ơn :)
EDIT: Cố định
tôi nhận nó làm việc .... Có vẻ tôi đã gọi phương thức [self.tableView reloadData] trong phương thức viewWillAppear của tôi sau đó khiến bảng bỏ chọn tất cả các ô. Dưới đây là phương pháp viewDidLoad đã sửa đổi của tôi. Cảm ơn các đề xuất!
- (void)viewWillAppear:(BOOL)animated
{
NSLog(@"running viewWIllAppear for TripsTable");
//Getting indexpath for highlighened cell, to rehighlight
NSIndexPath *selectedIndex = [self.tableView indexPathForSelectedRow];
//Refreshing Table - Implement an if statement on the condition that the data has changed
[self viewDidLoad];
[self.tableView reloadData];
//Re select cell
[self.tableView selectRowAtIndexPath:selectedIndex animated:NO scrollPosition:UITableViewScrollPositionNone];
[super viewWillAppear:animated];
}
Shot trong bóng tối: Có thể điều khiển giao diện trước đó được dỡ xuống vì sử dụng bộ nhớ. Điều này có thể dẫn đến hành vi này. – dasdom