如何将解析文件传递给新的视图控制器

时间:2016-02-09 19:39:18

标签: ios objective-c parse-platform uiviewcontroller

我正在尝试将包含图像的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)

谁能告诉我我做错了什么? 谢谢

1 个答案:

答案 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];

您必须配置视图的第一个机会是PurchaseItemViewControllerviewDidLoad。在那里,你可以说...

PFFile *file = self.imageData;  // this is a PFFile with a confusing name
self.bookCoverImageView.file = file;
[self.bookCoverImageView loadInBackground];