我有Table View控制器,然后它有子类DetailViewController,其内容根据选择的单元格而变化,但是当继续前进时,从我的DetailViewController转到MapView,我尝试使用我用于在DetailViewController上获取文本的相同方法,但无论我做什么,它都不行。我现在更喜欢它3周了:(
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{ if(!self.detailViewController){ self.detailViewController = [[DetailViewController alloc] initWithNibName:@“DetailViewController”bundle:nil];
[self.navigationController pushViewController:self.detailViewController animated:YES];
[self.detailViewController changeProductText:[teksti objectAtIndex:indexPath.row]];
[self.detailViewController changeProductText1:[adrese objectAtIndex:indexPath.row]];
[self.detailViewController changeProductText2:[laimigastunda objectAtIndex:indexPath.row]];
[self.detailViewController changeImage:[imageChange objectAtIndex:indexPath.row]];
}
} 无论我在这里改变什么,它都不起作用。
答案 0 :(得分:0)
从您显示的代码中可以看出,您没有向detailViewController提供数据对象,而是直接设置值。
这不是这样做的方式,也可能是您遇到问题的原因。你需要掌握MVC的概念并回到它。
至少你应该这样做 1.在第一个视图中使用键@“teksti”,@“adrese”,@“longitude”,@ latitude“构建字典。 2.在DetailViewController中创建一个属性来保存字典。 3.更新显示DetailViewController时显示的值
因此,当您按下地图按钮时,您可以推送包含mapView的视图,并将地图设置为您拥有的纬度和经度。
所以它会这样做:
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:[teksti objectAtIndex:indexPath.row], @"teksti", [adrese objectAtIndex:indexPath.row], @"adrese", [latitude objectAtIndex:indexPath.row], @"latitude", [longitudes objectAtIndex:indexPath.row], @"longitude", nil];
[detailViewController setDict:dict];
并在DetailViewController.m中:
- (void)viewWillAppear:(BOOL)animated{
[self changeProductText:[dict objectForKey:@"teksti"]];
.... And so on
}
您的代码将为您提供更多详细信息。