我有一个带有CutomCells的TableViewCell,其中包括图像视图,当用户选择某行时,此行中的图像应显示在另一个viewController中。 这些控制器之间的连接是通过segue完成的,我尝试设置图像。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ImageVC"])
{
ImageViewController * ivc = segue.destinationViewController;
ivc.myTemporaryImage = [self.dataDictionary objectForKey:self.names[self.selectedCell]];
}
}
定义选择了哪一行我使用TableViewDelegates方法:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
self.selectedCell = indexPath.row;
[self.dataDictionary objectForKey:self.names[indexPath.row]];
}
这里没有反映图像的问题,首先导致fires方法:prepareForSegue,并且只在那之后 - didSelectRowAtIndexPath。但我需要改变这个顺序。你能建议怎么做吗?
此外,我尝试以编程方式创建ImageViewController,而不使用segue,直接在方法didSelectRowAtIndexPath中,但在此图中未显示此图像。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.dataDictionary objectForKey:self.names[indexPath.row]];
ImageViewController * ivc = [[ImageViewController alloc]init];
ivc.myTemporaryImage = [self.savedImages objectForKey:self.names[indexPath.row]];
[self.navigationController pushViewController:ivc animated:YES];
}
请问您如何管理此问题?
答案 0 :(得分:1)
我认为你可以在willSelectRowAtIndexPath方法中保存indexPath。
答案 1 :(得分:1)
您必须在单元格中删除对segue的直接引用,然后在tableView委托中以编程方式调用它:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
self.selectedCell = indexPath.row;
[self performSegueWithIdentifier:@"ImageVC", sender: [self.savedImages objectForKey:self.names[indexPath.row]]]
}
然后在prepareForSegue:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ImageVC"])
{
ImageViewController * ivc = segue.destinationViewController;
ivc.myTemporaryImage = sender;
}
}