2009-10-22 78 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

相關問題