将图像数据传递给 imageview 时未获取所有图像
not getting all images when passing images data to imageview
我正在 detailviewcontroller
中将 xml 图片 url 解析为 imageview
,但我通过 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
方法中写了这段代码。
如果您在 属性 中将数据传递给 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 的推送转场,则不需要 tableView:didSelectRowAtIndexPath:
方法。给 segue 一个标识符(例如 "showDetail")。然后在 prepareForSegue 中,您传递必要的数据,如前所述。
您可以在 DetailViewController
中创建图像 属性
并且从tableview didSelectRowAtIndexPath 方法。调用 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];
}
}
我正在 detailviewcontroller
中将 xml 图片 url 解析为 imageview
,但我通过 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
方法中写了这段代码。
如果您在 属性 中将数据传递给 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 的推送转场,则不需要 tableView:didSelectRowAtIndexPath:
方法。给 segue 一个标识符(例如 "showDetail")。然后在 prepareForSegue 中,您传递必要的数据,如前所述。
您可以在 DetailViewController
中创建图像 属性并且从tableview didSelectRowAtIndexPath 方法。调用 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];
}
}