2011-08-25 40 views
1

我的导航栏中有2个视图View1View2View1tableView。所以我想要做的是deselectRow when I come back from View2 to View1`。这工作正常,如果只是这样做:iPhone:重新加载后取消选择RowAtIndexPath

- (void)viewWillAppear:(BOOL)animated { 
    NSIndexPath *myIP = [NSIndexPath indexPathForRow:0 inSection:0]; 
    [self.tableView deselectRowAtIndexPath:myIP animated:NO]; 

}

而且我需要重新加载该行。但是,如果调用reloaddeselect不工作:

- (void)viewWillAppear:(BOOL)animated { 
    self.navigationController.navigationBarHidden = NO; 

    NSIndexPath *myIP = [NSIndexPath indexPathForRow:0 inSection:0]; 
    [self.tableView deselectRowAtIndexPath:myIP animated:NO]; 
    [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:myIP] withRowAnimation:UITableViewRowAnimationNone]; 
} 

我也试图selectdeselect它,这样的作品,但问题是,我打开视图1在第一时间或从另一种观点,我看取消动画

- (void)viewWillAppear:(BOOL)animated { 
self.navigationController.navigationBarHidden = NO; 

NSIndexPath *myIP = [NSIndexPath indexPathForRow:0 inSection:0]; 

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:myIP] withRowAnimation:UITableViewRowAnimationNone]; 
[self.tableView selectRowAtIndexPath:myIP animated:NO scrollPosition:UITableViewScrollPositionNone]; 
[self.tableView deselectRowAtIndexPath:myIP animated:NO]; 

} 

有什么建议吗?在此先感谢...

回答

0

在跳转到新视图之前,您是否可以不取消选择didSelectRowAtIndexPath中的行:(对于视图1)?这样你就不用担心在返回时取消选择它。这就是我通常所做的。

+0

(更新我的答案,使用选择方法的表格行) – Simon

+0

这通常是这样做的方式。正如Simon所说的,只需添加[self.tableView deselectRowAtIndexPath:indexPath.row];到您的didSelectRowAtIndexPath tableView委托方法的末尾。 –

0

通常在从一个视图向另一个视图移动时,如果第一视图是表视图然后在表视图delagate源会有方法“didSelectRowAtIndexPath方法:”此方法下,我们将调用的类和在呼叫有两种类型 1.使用PresentModalViewController - 它会像导航和使用后退按钮的第一个视图可以调用。 2.使用PushViewController - 它将移动到下一个视图并返回到相同的视图,我们必须再次添加一个IBACTION按钮并使用dismiss模式视图控制器。

这是速滑运动员的肌肉两种观点的运动方法.....

0

我同意,移动到下一个视图之前取消行听起来像你最好的选择,但是,我发现,这是更好地取消行中的viewDidDisappear方法,像这样:如果你正在改变细胞的任何格式,当他们选择,如更改行高度

- (void)viewDidDisappear:(BOOL)animated 
{ 
    NSIndexPath *selected = [self.tableView indexPathForSelectedRow]; 
    if (selected) [self.tableView deselectRowAtIndexPath:selected animated:NO]; 

    [self.tableView beginUpdates]; 
    [self.tableView endUpdates]; 
} 

最后两个代码的行会有所帮助。如果选定/未选定行的格式保持不变,则可以忽略这两行。