PrepareForSegue 总是返回索引为 0 的单元格
Posted
技术标签:
【中文标题】PrepareForSegue 总是返回索引为 0 的单元格【英文标题】:PrepareForSegue always returns cell at index 0 【发布时间】:2014-08-10 16:23:49 【问题描述】:所以这个问题类似于UITableView - IndexPath always returns 0 first & takes 2 clicks to pass correct data to view controller 此处描述的问题,但是他们建议的答案无助于解决问题,所以我专门询问我的代码。这是我的 prepareForSegue 方法:
//send to a detail version of each of the chatters allowing a report a user
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([[segue identifier] isEqualToString:@"pushToDetail"])
ChatterDetailViewController *chatterDetail = [segue destinationViewController];
UITableViewCell *cell = (UITableViewCell*)sender;
long indexPathSelected = [self.tableView indexPathForCell:cell].row;
Chatter *detailChatter = [_arrayWithoutME objectAtIndex:indexPathSelected];
NSData *fbImageData = [NSData dataWithContentsOfURL:[NSURL URLWithString: detailChatter.url]];
_detailProfile = [UIImage imageWithData:fbImageData];
chatterDetail.detailProfile = _detailProfile;
这显然与另一个问题上建议的答案看起来不同,但是我尝试了它并没有改变任何东西。每当我单击 tableView 单元格时,它就会完成 segue,并且我会从第一个单元格(索引 0)而不是单击它的单元格中看到个人资料图片。我尝试使用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
但是它没有像我需要的那样传递图像值,而且当我尝试使用展开 segue 返回时,它说导航树已损坏(当前代码不会发生这种情况)。基本上我似乎无法找到为什么选择任何单元格只返回第一个单元格的信息。
编辑:
以下是 Chatter Detail 视图中的一些代码确实加载方法:
- (void)viewDidLoad
[super viewDidLoad];
self.navigationItem.hidesBackButton = YES;
_detailProfilePicture.contentMode = UIViewContentModeScaleAspectFill;
_detailProfilePicture.image = _detailProfile;
[_detailProfilePicture sizeToFit];
同样,它确实返回了一张图片,但它只是索引为 0 的单元格中的图片。
【问题讨论】:
发件人日志给你什么? 从发件人那里我得到一个有一种更简单的方法可以为您在 UITableView 中选择的行提取 indexPath:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([[segue identifier] isEqualToString:@"pushToDetail"])
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
// section and row return an int like this:
NSLog(@"index path: section %i, row %i", indexPath.section, indexPath.row);
但是,您的代码确实给出了正确的行值,并且 long 确实可以用于从 NSArray 获取对象。我会在这个方法的末尾放一个断点或日志消息,看看你的数组中是否真的有正确的值。
我还会检查您在 indexPathSelected 中获得的值 - 这应该反映所选行。
【讨论】:
indexPathSelected 为 0。我试过这个方法,但它仍然返回 0。 self.tableView 是否真的引用了屏幕上的表格视图?快速检查测试:NSLog(@"self.tableView 中的行数:%i", [self.tableView numberOfRowsInSection:0]); 我得到 0,这意味着我实际上并没有引用我认为我认为的内容 所以,我将 tableview 连接到,它确实说我有 9 行进行该测试,但是,当我使用 indexPathForSelectedRow 单击其中一个时,它只返回 0 indexPath.row 怎么样?以上是关于PrepareForSegue 总是返回索引为 0 的单元格的主要内容,如果未能解决你的问题,请参考以下文章