2016-02-09 3 views
2

Я пытаюсь передать PFile, содержащий изображение, новому контроллеру представления изображений, однако я не могу успешно передать файл.Как передать файл анализа новому контроллеру View

Вот код, где я пытаюсь передать файл в

- (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] здесь файл (нуль)

может ли кто-нибудь сказать мне, что я делаю неправильно? Thanks

ответ

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]; 
+0

Еще раз спасибо за вашу помощь! –

+0

Счастливые помочь. Кстати, я хотел бы упомянуть по другому вопросу, было бы лучше, если бы вместо массива для каждого атрибута выбранных объектов, почему бы просто не оставить один массив PFObjects, возвращаемых запросом? Затем вы можете получить сразу все атрибуты. – danh

+0

Это очень разумное предложение, которое я попытаюсь реализовать. –

Смежные вопросы