我正在imageview
中将xml图片网址解析为detailviewcontroller
,但我通过shareddelegate
传递了图片。但是当我点击tableviewcell
时,只有少数图像出现在detailviewcontroller
。
imageview.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:sharedDelegate.imagObj]]];
我在detailviewcontroller
AppDelegate *sharedDelegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];
sharedDelegate.imagObj = [Imagesarray objectAtIndex:indexPath.row];
我在tableview didselectrow
方法中编写了此代码。
答案 0 :(得分:2)
如果将数据传递给属性中的detailViewController,它将使您的代码更易于阅读和维护。
这将有助于detailViewController更加自包含,并限制它可以变异的内容。
向DetailViewController添加一个属性,以获取要传递的数据。听起来你想要传递一组图像URL,所以添加一个数组属性:
@property (nonatomic, strong) NSArray *images;
在prepareForSegue:sender:
中,将DetailViewController传递的图像设置为与所选行关联的值:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)__unused sender
{
if ([[segue identifier] isEqualToString:@"showDetail"])
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
DetailViewController *controller = (DetailViewController *)[segue destinationViewController];
controller.images = ...;
}
}
如果您在Storyboard中创建一个从tableViewCell到DetailViewController的推送segue,则不需要tableView:didSelectRowAtIndexPath:
方法。给segue一个标识符(例如" showDetail")。然后在prepareForSegue中,您传递必要的数据,如上所述。
答案 1 :(得分:1)
您可以在DetailViewController
中创建图像属性并从tableview中选择了ActionRowAtIndexPath方法。打电话给segue
[self performSegueWithIdentifier:@"DetailSegue" sender:indexpath];
并从
设置- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"DetailSegue"])
{
DetailViewController *dc = (DetailViewController *)[segue destinationViewController];
dc.image = [imagesarray objectAtIndex:sender.row];
}
}