私のアプリには複数のテーブルビューがあります。私はテーブルの通常の動作に精通しています。行を選択してプッシュされたビューに進むと、青色に変わり、その後に戻ってくると、それは2秒間青色のままで、次に白にフェードしてユーザーに通知しますどの行が選択されたのかを示します。私はなぜわかりませんが、後に...それは二その分割のための青い滞在しなかった返品時にUITableViewで行が選択されない
を:
は、これは私が気づいたときに、それはもはや私が説明したものの最後のビットをした最近まで完全に働いていませんこのサイトのいくつかの関連する記事を読んで、私はそのコードが "viewDidAppear"メソッドに呼び出されることに気付きました。私が混乱しているのは、このメソッドをオーバーライドしないことですが、NSLogを使ってテストして、選択解除すべき行のインデックスパスを表示しました。これはnullを返しました。
これは、何とか、tableViewが途中で行の選択を解除していると私に信じさせています。私のようだ....私はそれが働いてしまった
修正:、ありがとう:)EDITすべてのヘルプは大歓迎です
- (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];
}
:以下
は私のdidSelectRowForIndexPath方法であります私のviewWillAppearメソッドで[self.tableView reloadData]メソッドを呼び出すと、テーブルがすべてのセルの選択を解除しました。以下は私の修正したviewDidLoadメソッドです。提案していただきありがとうございます!- (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];
}
ショット良い作品を行います。これはこの動作につながる可能性があります。 – dasdom