Тот же UIViewController загружается из 2 разных источников, но с разными результатами - PullRequest
1 голос
/ 24 января 2012

В моем приложении у меня есть 2 отдельных способа добраться до одного и того же UIViewController, по пути пройти через 2 родительских ViewController, созданных с использованием раскадровки, и этот способ отлично работает, просто передавая и идентифицируя каждый переход segue.

Другой способ (с которым мне нужна помощь) идет непосредственно от кнопки, нажатой на RootViewController, он также просто передает идентификатор в определенный пользователем объект с именем Event.Код для каждого перехода указан ниже:

Из последовательности:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    NSIndexPath *path = [self.tableView indexPathForSelectedRow];
    Event *event = [nEventList objectAtIndex:path.row];
    EventInfo *eventInfo = segue.destinationViewController; //Create new ViewController
    eventInfo.eventID = event.id;
}

С кнопки:

- (void)FeaturedPressedAction:(id)sender
{
    UIButton *button = (UIButton *)sender;
    int tag = button.tag;
    EventInfo *eventInfo = [[EventInfo alloc] init]; //Create new ViewController
    eventInfo.eventID = @"1"; //There is an event with id '1'
    [self.navigationController pushViewController:eventInfo animated:YES];
}

И код для установки ViewController:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    UIImage *image = [UIImage imageNamed:@"title.png"];
    self.navigationItem.titleView = [[UIImageView alloc] initWithImage:image];

    SingletonClass* myapp = [SingletonClass sharedInstance];
    events = [myapp getEvents];

    // Loop to filter out the events that Do not have this ID
    Event *event;
    BOOL found = false;
    for (int i = 0; i < [events count]; i++) {
        if(!found){
            event = [events objectAtIndex:i];
            if([event.id isEqualToString: eventID]){
                found = true;
                NSLog(@"Found the event with title %@", event.title);
            }
        }
    }

    self.eventTitle.text = event.title;
    self.eventLocation.text = event.location;
    self.eventDate.text = event.date;
    self.eventTime.text = @"22:00";
    self.eventDescription.text = event.details; 
}

Находит событие хорошо, как я вижу, с левой стороны NSLog, только ни одно из представлений не загружается при приходеот нажатия кнопки.Куда я иду не так?

1 Ответ

2 голосов
/ 24 января 2012

Вместо того, чтобы выделять EventInfo*, вы должны вместо этого создать его экземпляр из раскадровки.

Так что в вашем FeaturedPressedAction замените строку инициализации на:

EventInfo *eventInfo = [self.storyboard instantiateViewControllerWithIdentifier:@"..."];

И убедитесь, чтовы идентифицируете ViewController в Интерфейсном Разработчике с тем же идентификатором.Замените ... чем-то значимым.

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