2009-10-22 40 views
0

我正在创建一个基于UINavigationController的应用程序。在第一个视图中,我有一个UITableViewController。UITableViewController单元格淡出

我想要有与联系人应用程序具有相同的行为。 1)用户选择接触 2)系统查看联系方式 3)用户选择阙后退按钮 4)系统返回到的tableview,和淡出细胞

如果创建一个UIViewController我只能做到这一点,和一个带有UITableView的xib。 然后添加以下代码:

- (void)viewDidAppear:(BOOL)animated{ 
    if ([self.mytableView indexPathForSelectedRow] != nil){ 
     [self.mytableView deselectRowAtIndexPath:[self.mytableView indexPathForSelectedRow] animated:YES]; 
    } 
} 

我真的不希望有只为这个厦门国际银行。那么是否可以使用UITableViewController来实现?

回答

1

是的。 A UITableViewControllerUIViewController的一个子类,因此您可以根据需要覆盖viewDidAppear:animated方法。

如果要以编程方式创建UITableViewControl(即不从nib加载它),则必须手动配置UITableView。看到在UITableViewController class reference以下:

  • 如果通过initWithNibName:bundle:方法指定了笔尖文件(这是由超类UIViewController声明),UITableViewController载荷表格视图中笔尖文件归档。否则,它会创建一个未配置的UITableView对象,并具有正确的尺寸和自动调整大小的掩码。您可以通过tableView属性访问此视图。
  • 如果加载了包含表视图的nib文件,则数据源和委托将成为nib文件(如果有)中定义的那些对象。如果未指定nib文件或者nib文件未定义数据源或委托,则UITableViewController将表视图的数据源和委托设置为self
+0

是的,我知道,但是当我重写viewDidAppear:动画来取消它不会工作的行,因为已经的UITableViewController取消选择该行,但不显示该行给用户。 对不起英语不好...... – Baltas

+0

也许你可以尝试使用'scrollToRowAtIndexPath:atScrollPosition:animated:'使选定的行在取消选择之前可见。你可以尝试在'viewDidAppear'中调用'deselectRowAtIndexPath:animated:'或者在'viewWillAppear'之前调用''''。 –

+0

好吧,我发现了这个问题。 在viewWillAppear我有[self.tableView reloadData],因为我可能会改变我的数据的内容。 如果我在reloadData之前测试[self.tableView indexPathForSelectedRow],我得到零,所以没有工作。 如果我不调用reloadData方法,单元格淡出正确,但我的数据可能不是最新的,那么有没有其他方法可以实现这一点? – Baltas

相关问题