2013-11-09 34 views
0

我知道有這種方法來檢測它的UITableViewCell選擇:的UITableViewCell知道點擊/選擇哪種細胞

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath { 

} 

但我不想知道所選行,我想知道是什麼細胞的內容是,並根據我想做的事情。那麼是否有一種方法來標記單元格? 爲了更好地理解,假設我有四個單元格1,2,3和4.當我重新排列它們,我的順序是1,4,2,3,並且我想在另一個視圖中顯示該值時,它會顯示我2而不是4當我選擇第二行。

回答

5

您出租車呼叫

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath 

tableView:didSelectRowAtIndexPath:實現方法獲得的細胞,就像這樣:

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath { 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    ... 
} 

然而,這是訪問,特別是修改的適當方式,表格的內容。相反,您應該訪問型號,表格從中獲取其信息,並在其中進行所有修改。這樣,噹噹前單元格的視覺效果從屏幕上滾動並返回時,這些更改將「粘住」。

+0

謝謝。雖然我不想訪問或修改內容,但由於誤解,我只想知道哪個單元格被選中,因此我可以顯示正確的視圖。 – Yannick

0

您可以在didselect委託方法中像這樣訪問選定的單元格。

UITableViewCell *lab = [tableView cellForRowAtIndexPath:indexPath]; 
    UILabel *selectedCellLabelText = lab.textLabel.text; 
0

首先你可以在第二類中定義的NSString的屬性來訪問對應於特定的細胞內容的價值,arrayData是您的陣列,其中的值是例如存儲1,2,3,4,5,然後在你的第一類寫這樣的代碼: -

- (void) tableView:(UITableView *) tableView didSelectRowAtIndexPath:(NSIndexPath *) indexPath 
{ 
    SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; 

    secondView.stringValue = [arrayData objectAtIndex:indexPath.row]; 

    [self.navigationController pushViewController:secondView animated:YES];  
} 
1

有三種方式,據我所知,

1)接入該小區通過調用[的tableView的cellForRowAtIndexPath :indexPath]。 現在您可以將單元格的數據與模型進行比較。即您可以使用NSPredicate獲取您所選模型行數據的索引值(您從中填充表格單元格)

2)當您對錶格行重新排序時,只需更改您的模型。例如。第4行成爲第2行,通過簡單地從第4個位置移除對象並添加到第2個位置來重新排序模型(可能是ArrayList)。所以,當你刪除表格行時,它將成爲該行模型數據的相同索引號。

3)您可以標記每個視圖。但這是代碼冗餘。這樣做你可以做到這一點。而不是這個選項,我會去第一或第二(對於我的意見第二選擇是最好的,如果使用你的模型/陣列只保留記錄。)