使用 cell 属性 滚动到 UITableView 中的特定单元格
Scroll to specific cell in UITableView with cell property
我有一个 UITableViewCell
的例子如下:
//
// ItemTableViewCell.h
//
#import <UIKit/UIKit.h>
@interface ItemTableViewCell : UITableViewCell
@property (weak, nonatomic) NSString *itemId;
@end
在我的 UIViewController
和 UITableView
中,我有以下分配:
- (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"];
}
现在,我如何滚动到 UITableView
中的特定单元格及其单元格 属性 itemId
?
注意:我非常希望不要使用 indexPathForRow
方法。
您应该执行以下操作:
- 通过
item_id
找到NSManagedObject
- 从
NSFetchedResultsController
中获取找到的对象的 indexPath
- 滚动
tableView
到那个 indexPath
参见下面的代码示例:
- (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];
}
我有一个 UITableViewCell
的例子如下:
//
// ItemTableViewCell.h
//
#import <UIKit/UIKit.h>
@interface ItemTableViewCell : UITableViewCell
@property (weak, nonatomic) NSString *itemId;
@end
在我的 UIViewController
和 UITableView
中,我有以下分配:
- (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"];
}
现在,我如何滚动到 UITableView
中的特定单元格及其单元格 属性 itemId
?
注意:我非常希望不要使用 indexPathForRow
方法。
您应该执行以下操作:
- 通过
item_id
找到 - 从
NSFetchedResultsController
中获取找到的对象的 - 滚动
tableView
到那个indexPath
NSManagedObject
indexPath
参见下面的代码示例:
- (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];
}