iphone UIViewController не показывает данные, переданные с первого контроллера представления - PullRequest
0 голосов
/ 09 февраля 2012

Цель этого приложения - извлечь данные, выбранные в UITableCell, и передать их новому контроллеру представления.Все хорошо, пока пользователь не выберет ячейку.Контроллер следующего вида загружен, но экран черный.На этом экране у меня есть UIImageView и UILabel.У меня UINavigationController настроен в раскадровке.Я пытаюсь получить изображение и текст, выделенные на первом экране, соответствующими объектами на следующем экране.Я получил данные из базы данных и загрузил их на первый экран.

Вот мой код на моем storedetail.h, который является подклассом для UIViewController,

@property (nonatomic, copy) UIImage *storeImage;
@property (nonatomic, copy) UILabel *storeCode;

Вот мой код, где я вызываю контроллер nextview, который является ShowStores.m, который является подклассом кода заголовка UITableView,

,

#import "ShowStores.h"
#import "StoreDetail.h"

кода, куда я загружаю следующеепосмотреть, когда пользователь выбирает ячейку,

(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[tableView deselectRowAtIndexPath:indexPath animated:NO];
StoreDetail *storedetail = [[StoreDetail alloc] init];
storedetail.storeImage = cell.imageView.image;
storedetail.storeCode = cell.textLabel;
storedetail.storeCode.text = cell.textLabel.text;
[self.navigationController pushViewController:storedetail animated:YES];
}

Я отладил ее, а cell.textLabel.text и cell.imageView.image не равны нулю или нулю.Второй вид загружается, но черный.Я установил кнопку «Назад» на втором экране, который возвращает пользователя к первому виду, и это прекрасно работает.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

у вас есть перо для вашего второго контроллера представления с storeCode uiLabel в?или вы создаете storeCode UILabel программно в viewDidLoad?

Я бы удалил эту строку:

   storedetail.storeCode = cell.textLabel;

в этой строке:

   storedetail.storeImage = cell.imageView.image;

storeImage - это UIImage, когдаЯ думаю, вы хотите, чтобы это был UIImageView.(Я бы тоже удалил эту строку и создал storeImageView точно так же, как вы создаете storeCode uiLabel - либо поместите его в перо, либо создайте его программно в viewDidLoad.

EDIT:

createобъекты в viewDidLoad выглядят следующим образом:

storeCode = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, 120, 16)];
[self addSubview:storeCode];

Для изображения я бы назначил имя изображения (имя файла или путь) для свойства NSString на вашем втором контроллере представления, а затем в viewWillAppear используйте строку для созданияисправьте UIImage, а затем назначьте этот UIImage вашему UIImageView.

0 голосов
/ 09 февраля 2012

UIImage и UILabel не соответствуют протоколу NSCopying, это, скорее всего, причина. И поэтому объявление @property (nonatomic, copy) не дает никакого эффекта в качестве вашего намерения.

Я предлагаю установить для них сохранение, а в тот момент, когда вы хотите сделать копии, просто инициализируйте и назначьте им объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...