2016-09-06 1 views
0

I wie unten ein Beispiel UITableViewCell haben:Blättern Sie zu bestimmten Zelle in UITableView mit Zelleneigenschaft

// 
// ItemTableViewCell.h 
// 
#import <UIKit/UIKit.h> 

@interface ItemTableViewCell : UITableViewCell 

@property (weak, nonatomic) NSString *itemId; 

@end 

In meinem UIViewController mit UITableView ich die folgenden Zuweisung haben:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    NSManagedObject *row = [self.itemsFRC objectAtIndexPath:indexPath]; 
    ItemTableViewCell *cell = (ItemTableViewCell *)[self.tableView dequeueReusableCellWithIdentifier:@"cellId" forIndexPath:indexPath]; 

    cell.itemId = [row valueForKey:@"item_id"]; 
} 

Nun kann, wie Scrolle ich zu einer bestimmten Zelle in UITableView mit seiner Zelleigenschaft itemId?

Hinweis: Ich bevorzuge es, nicht indexPathForRow Methode zu verwenden.

+3

Holen Sie sich den Index der 'itemId' in' self.itemsFRC' und verwenden Sie 'scrollToRowAtIndexPath' zu diesem Index von Zeile und Abschnitt und Sie sind gut zu gehen – Tj3n

+0

' self.itemsFRC' ist in meinem Fall nicht zuverlässig. Ich könnte das nicht benutzen. Ich habe nur Zellen mit itemId –

+0

Dann vorher die gesamte itemID in ein Array, anstatt mit diesem 'self.itemsFRC', um Ihre Zelle zu befüllen – Tj3n

Antwort

1

sollten Sie Folgendes tun:

  1. Finden NSManagedObject von item_id
  2. indexPath gefundene Objekt Holen von NSFetchedResultsController
  3. Scroll tableView dem indexPath

Siehe folgende Codebeispiel:

- (void) scrollToRowWithItemID: (NSString *) itemID { 
    NSArray *fetchedObjects = self.itemsFRC.fetchedObjects; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat: @"item_id == %@", itemID]; 
    NSArray *filteredArray = [fetchedObjects filteredArrayUsingPredicate: predicate]; 
    NSIndexPath *indexPath = [self.itemsFRC indexPathForObject: filteredArray.firstObject]; 
    [self.tableView scrollToRowAtIndexPath: indexPath atScrollPosition: UITableViewScrollPositionNone animated: true]; 
} 
+0

Toll, kennst du einen anderen Weg, ohne sich auf 'self.itemsFRC' zu verlassen? –

+0

Es hängt von Ihrem Anwendungsfall ab. Wann müssen Sie in Ihrer Tabellenansicht blättern? –

+0

Ich möchte basierend auf "itemId" der Zelle selbst scrollen, etwas wie in Zellen nachschlagen anstatt "NSFetchResultController" zu überprüfen, ist es möglich? –