0

我正在创建一个 iphone 应用程序,其中 2 个 URL 从 xml 文件传递​​并通过要加载到 UIImageView 中的 segue 从 UITableView 发送到详细视图。这是我的 prepareForSegue 方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"detail"]) {
         NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
         NSMutableString *imgURL1 = [feeds[indexPath.row] objectForKey: @"imageURL1"];
         [[segue destinationViewController] setImg1:imgURL1];
         //img1 is declared in the detailviewcontroller class
    }
}

这是我在 detailViewController 中的 viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSURL * imageURL1 = [NSURL URLWithString:self.img1];
    NSData * imageData1 = [NSData dataWithContentsOfURL:imageURL1];
    UIImage * imag1e = [UIImage imageWithData:imageData1];
    appImage1.image = imag1e;
    //appImage1 is also declared in the detailViewController class
}

现在的问题是,当我运行应用程序时,appImage1 中没有显示任何内容,也没有报告错误或错误。谢谢你的帮助

4

2 回答 2

1

这里有几个问题:

1)为什么是可变字符串?NSString足够的。

2)依靠“选定的行”并不是很安全。这只是选择一行的副作用。理想情况下,您应该使用发件人。

NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell*)sender]; 

3) 不要在主线程上调用 URL 加载。相反,使用 和 进行异步NSURLRequest加载NSURLConnection。在didFinishLoading回调中设置图像。

4)检查还有什么可能出错的:

  • 图像视图为零。
  • 字符串为零。
  • URL 为 nil 或无效。
  • 服务器没有响应或没有发送数据或花费太长时间。
于 2013-07-04T20:59:51.803 回答
0

我解决了这个问题。显然,问题出在 URL 上。xml 解析器将 url 存储在 url 变量中,开头有一个空格,所以我所要做的就是使用 stringByTrimmingCharactersInSet 所以 segue 方法如下所示:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

//sends the image link
    NSString *imageURLS = [feeds[indexPath.row] objectForKey: @"appImageURL"];
    imageURLS = [imageURLS stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    NSURL *img = [NSURL URLWithString: imageURLS];
    [[segue destinationViewController] setAppImageURL:img];
}
于 2013-07-06T16:57:08.197 回答