【发布时间】:2014-12-12 13:50:08
【问题描述】:
我在做某事时遇到了麻烦:
我有一个 UIViewController,其中有一个 tableView,它已连接并设置了代表。我试图从 didSelectRowatIndexPath 发送一个 segue,在 prepareforSegue 中我试图读取一些选定单元格的数据(我正在使用模型来检索实际的重要数据,但我有一些元素,即我想要的 imageView从单元格中读取)
让我感到困惑的是,无论我如何设置发件人(self.tableView 或 self 或 indexPath 或任何东西),在 prepareforSegue 中我总是将单元格设置为 nil。
如果我将 UIViewController 更改为 UITableViewController 并将发送方设置为 tableView,则一切正常。
我错过了什么?
代码如下:
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self performSegueWithIdentifier:@"bundleItemDetails" sender:tableView];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"bundleItemDetails"])
{
NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
itemCell *cell = (itemCell*)[self.tableView cellForRowAtIndexPath:selectedIndexPath];
NSDictionary *currentProduct = [[[productsArray objectAtIndex:selectedIndexPath.section] objectForKey:@"products"] objectAtIndex:selectedIndexPath.row];
UINavigationController *navController = [segue destinationViewController];
itemDetails *bundleProducts = (itemDetails*)([navController viewControllers][0]);
UIImage *img = cell.itemImage.image;
bundleProducts.valueImage = img;
bundleProducts.valueName = [currentProduct valueForKey:@"title"];
bundleProducts.valueDescription = [currentProduct valueForKey:@"description"];
bundleProducts.detailFullPrice.text = [currentProduct valueForKey:@"price"];
}
}
这与 UITableViewController 完美配合,并为 UIViewController 的单元格值返回 nil
更新:一些新发现
看起来 indexPathForSelectedRow 返回 null 和 0。如果我将 didSelectRowAtIndexPath 的代码更改为:
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self.tableView selectRowAtIndexPath:indexPath
animated:NO
scrollPosition:UITableViewScrollPositionNone];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:YES];
[self performSegueWithIdentifier:@"bundleItemDetails" sender:self.tableView];
}
我得到了索引值,但我仍然有空 itemCell(itemCell 是一个带有外部 .xib 的自定义单元格,在 UIViewController 中的调用方式是否与在 UITableviewController 中不同?
【问题讨论】:
-
发送自我 [self performSegueWithIdentifier:@"bundleItemDetails" sender:self];
-
已经试过了,结果一样,单元格为nil
-
所以添加 self.tableview.datasource=self 和 self.tableview.delegate=self ?
-
是的,两者都设置为self
-
告诉我你使用 NSMutableArray 来填充你的 tableView 吗?
标签: uitableview uiviewcontroller tableview