2010-05-05 44 views
16

我是iphone開發新手。我創建了一個顯示我的內容的表格。如果我選​​擇一行,它的狀態將以​​藍色突出顯示,並導航到另一個視圖,如果我點擊後退按鈕,則導航回到顯示點擊藍色的單元格,我想在導航回到其視圖時移除桌面上突出顯示的顏色。如何才能做到這一點。謝謝。如何在iphone中再次顯示錶格視圖時刪除單元格選擇樣式顏色?

回答

14

我終於通過在我的表視圖類中實現了它。

- (void)viewWillAppear:(BOOL)animated 
{ 
    NSIndexPath *tableSelection = [self.tableView indexPathForSelectedRow]; 
    [self.tableView deselectRowAtIndexPath:tableSelection animated:NO]; 
} 
0

viewDidAppear:的默認實現應該爲您負責。如果您在表格視圖控制器中覆蓋了該方法,請不要忘記在覆蓋方法中調用[super viewDidAppear:animated]

48

我認爲普遍接受的方式是在您導航到新視圖時取消選擇單元格。而不是viewWillAppear,使用tableview委託方法didSelectRowAtIndexPath和您正在使用相同的deselectRowAtIndexPath。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath{ 
    [tableView deselectRowAtIndexPath:newIndexPath animated:YES]; 
} 

(和普遍接受的,我的意思是「東西,我經常在示例代碼中看到」。這取決於你想要什麼它看起來像在年底)

+0

這應該是公認的答案:) – Philip007 2012-11-08 00:58:36

+1

取消選定單元格這樣會導致動畫出現的新場景的負載,而不是作爲場景再次出現,這是@勇士的答案確實。取決於你想要什麼,我想。 – ele 2013-03-06 22:47:15

+0

同意,這是最好的解決方案。 – acoustic 2013-11-15 06:02:53

14

你做錯了,在cellForRowAtIndexPath方法上。使用此

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

在您UITableViewCells

這是正確的方式,如果你想既不回來觀點不被突出顯示單元格也沒有對選擇觸摸。如果您只希望在返回時查看其他解決方案時取消選擇該單元格更合適。

+0

對於Xamarin: cell.SelectionStyle = UITableViewCellSelectionStyle.None; swift 3: cell.selectionStyle = .none; – Array 2017-08-21 14:11:38

0

對於斯威夫特3:

override func viewWillDisappear(_ animated: Bool) { 
     if let indexPath = self.tableview.indexPathForSelectedRow { 
      tableview.deselectRow(at: indexPath, animated: true) 
     } 
    } 
相關問題