2012-02-01 73 views
0

我在我的tableview應用程序中創建一個「喜歡的頁面」菜單,用戶可以在其中保存他們喜歡的網頁,然後通過菜單更輕鬆地導航到它們。允許根據url字符串選擇tableview單元格

程序會在設置應用程序中保存頁面的名稱和每個喜歡頁面插槽的URL。默認URL爲「clear」,表示沒有URL(即最喜歡的插槽未使用)。

當用戶單擊桌面視圖單元格以獲取其所需的最喜歡頁面時,視圖將切換到UIWebview,並加載URL。我做到這一點,如果URL isEqualToString @"clear"UIWebView將不會加載顯示,並且「無」將會發生。

但是,當用戶單擊URL設置爲「清除」的tableview單元格時,單元格仍然以藍色突出顯示。這使得用戶覺得tableview單元格沒有被清除。無論如何檢查URL是否爲isEqualToString @"clear",並在單元格之前停止突出顯示藍色的單元格?

謝謝。

回答

1

編輯:這是一個更好的方法(在willSelect中執行...在第一次點擊時太晚了)。

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
     ... 
     if (--THIS IS THE 'CLEAR' URL CASE--) { 
      // This will prevent the **appearance** of being selected 
      cell.selectionStyle = UITableViewCellSelectionStyleNone; 
     } else { 
      cell.selectionStyle = UITableViewCellSelectionStyleBlue; 
     } 
     ... 
    } 

在didSelectCellForIndexPath ...

if (-- 'CLEAR' CASE --) { 
     // Do nothing... 
} else { 
     // do whatever you do for the selected case... 
} 
+0

但是如何指示單元格不是選擇,而不是做什麼? – DGund 2012-02-01 11:21:15

+0

看到上面編輯的代碼 - 這是一個更乾淨的方式來做到這一點。 – Rayfleck 2012-02-01 14:29:36

+0

我應該重置選擇樣式之後還是自動重置?當用戶點擊一個實際的URL時,我希望它仍然突出顯示。 – DGund 2012-02-01 23:52:29

0

你應該這樣做在tableView:willSelectRowAtIndexPath:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSString *url = [self urlForIndexPath:indexPath]; 

    if ([url isEqualToString:@"clear"]) 
     return nil; 

    return indexPath; 
} 

但是,如果你不想讓藍色的亮點,你也應該改變的selectionStyle tableView:cellForRowAtIndexPath:

相關問題