我正在尝试将包含图像的PFile传递给新的图像视图控制器,但我似乎无法成功传递该文件。
以下是我尝试在
中传递文件的代码- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
PurchaseItemViewController*purchaseItemViewController = [[PurchaseItemViewController alloc] initWithNibName:Nil bundle:Nil];
NSLog(@"%@",indexPath);
NSInteger row = indexPath.row;
purchaseItemViewController.objectID = _objectIDArray[row];
purchaseItemViewController.imageData = _bookImageData[row];
purchaseItemViewController.authorOfBook = _authorNameArray[row];
purchaseItemViewController.titleOfBook = _bookNameArray[row];
purchaseItemViewController.bookCoverImageView.file =_bookImageData[row];
NSLog(@"HERE IS THE DATA %@",_bookImageData[row]);
NSLog(@"here is the file %@",purchaseItemViewController.bookCoverImageView.file);
[purchaseItemViewController.bookCoverImageView loadInBackground];
// purchaseItemViewController
// Push the view controller.
[self presentViewController:purchaseItemViewController animated:NO completion:Nil];
}
当我执行代码时,我得到以下注销
016-02-09 14:36:33.265 ParseStarterProject [17786:7270793]这里是数据" PFFile:0x7fbe12f7dcb0"
2016-02-09 14:36:33.266 ParseStarterProject [17786:7270793]这里是文件(null)
谁能告诉我我做错了什么? 谢谢
答案 0 :(得分:0)
问题是视图控制器尚未准备好在此代码运行时配置其视图(例如bookCoverImageView
)。
正确的步骤顺序是像你一样构建purchaseItemViewController
,从数据源设置属性,然后呈现它。不要尝试配置其视图或加载图像。
PurchaseItemViewController*purchaseItemViewController = [[PurchaseItemViewController alloc] initWithNibName:Nil bundle:Nil];
NSLog(@"%@",indexPath);
NSInteger row = indexPath.row;
purchaseItemViewController.objectID = _objectIDArray[row];
purchaseItemViewController.imageData = _bookImageData[row];
purchaseItemViewController.authorOfBook = _authorNameArray[row];
purchaseItemViewController.titleOfBook = _bookNameArray[row];
// TOO EARLY FOR THIS:
// purchaseItemViewController.bookCoverImageView.file =_bookImageData[row];
NSLog(@"HERE IS THE DATA %@",_bookImageData[row]);
// TOO EARLY FOR THIS:
// NSLog(@"here is the file %@",purchaseItemViewController.bookCoverImageView.file);
// TOO EARLY FOR THIS:
// [purchaseItemViewController.bookCoverImageView loadInBackground];
[self presentViewController:purchaseItemViewController animated:NO completion:Nil];
您必须配置视图的第一个机会是PurchaseItemViewController
,viewDidLoad
。在那里,你可以说...
PFFile *file = self.imageData; // this is a PFFile with a confusing name
self.bookCoverImageView.file = file;
[self.bookCoverImageView loadInBackground];