Данные не передаются для просмотра контроллера при нажатии - PullRequest
0 голосов
/ 10 января 2012

У меня есть 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 Ответ

1 голос
/ 10 января 2012

Вы не можете передавать такие данные.В то время ViewController.domainField имеет значение nil, поскольку представление еще не загружено, а метка / 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];
}

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

...