0

У меня есть tableviewcontroller с населением данных. Я пытаюсь получить представление новых деталей, которое нужно нажать, когда пользователь нажимает на ячейку. Я могу получить представление для загрузки, однако метки для отображения данных более подробно не обновляются. Вот код:Данные не передаются для просмотра контроллера при нажатии

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

SearchDetailViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"searchDetailVC"]; 
Events *event = [events objectAtIndex:indexPath.row]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterLongStyle]; 
NSString *dateString = [dateFormatter stringFromDate:event.eventDate]; 

controller.title=event.eventName; //ONLY ONE THAT WORKS! 


controller.eventName.text = event.eventName; 
controller.eventAddress.text = event.eventAddress; 
controller.eventDate.text = dateString; 
controller.eventTime.text = event.eventTime; 
controller.ratingView.image = [self imageForRating:event.eventRating]; 
controller.eventDistance.text = @"NOT YET IMPLEMENTED"; 

[self.navigationController pushViewController:controller animated:YES]; 
} 

Единственное свойство, которое установлено, - это название навигационной панели NavigationController. Я делаю что-то совершенно неправильное?

+1

- это eventName, eventAddress и т. Д., Указывающие на элементы в представлении? похоже, что представление не загружается в тот момент, когда вы нажимаете новый контроллер. возможно, сохраните их в экземплярах vars контроллера вида, а затем установите элементы интерфейса в 'viewDidLoad'? –

ответ

1

Вы не можете передавать данные следующим образом. В то время ViewController.domainField равен нулю, поскольку представление еще не загружено, а метка/TextField создается, когда представление загружается (через нить), а не сразу после создания объекта контроллера представления.

Этот код может помочь вам

SearchDetailViewController.h 
    #import <UIKit/UIKit.h> 
    @interface SearchDetailViewController : UIViewController 
    { 

     NSString* eventNameString ; 
     NSString* eventAddressString; 
     ........... 
     ............. 

    } 
    @property (nonatomic,retain) NSString* eventNameString ; 
    @property (nonatomic,retain) NSString* eventAddressString; 
    ............... 
    ............... 
    @end 


SearchDetailViewController.m 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    eventName.text=eventNameString; 
    eventAddress.text=eventAddressString; 
    .......................... 
    .......................... 
    eventNameString=[[NSString alloc]initWithString:@""]; 
} 


TableView.m 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

SearchDetailViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"searchDetailVC"]; 
Events *event = [events objectAtIndex:indexPath.row]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterLongStyle]; 
NSString *dateString = [dateFormatter stringFromDate:event.eventDate]; 

controller.title=event.eventName; //ONLY ONE THAT WORKS! 


controller.eventNameString=[[NSString alloc]initWithString:event.eventName]; 
controller.eventAddressString=[[NSString alloc]initWithString:eventAddress]; 
............................... 
............................... 
............ 

[self.navigationController pushViewController:controller animated:YES]; 
} 

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

+0

Спасибо, я реализовал это, но когда код попадает в строку '[self.navigationController pushViewController: controller animated: YES];' Я получаю сообщение об ошибке '*** Завершающее приложение из-за неперехваченного исключения 'NSUnknownKeyException', причина : '[ setValue: forUndefinedKey:]: этот класс не подходит для кодирования ключа для ключа buyButton.''. Теперь я удалил все ссылки на эту кнопку (она была в ячейке) и даже удалила сама кнопку. Почему это даже упоминается? –

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