выходная коллекция для контроллера подробного представления

У меня есть коллекция кнопок, которая собирает 10 ближайших магазинов и отображает их по порядку. Что я пытаюсь сделать, так это то, что всякий раз, когда нажимается одна из кнопок, она открывает контроллер подробного представления и отображает заголовок в новом окне. Код, который у меня есть, который объявляет коллекцию запросов и выходов, выглядит следующим образом:

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        int i = 0;
        for (PFObject *object in objects) {
            if (i >= [self.EventTitles count]) break;
            [(UIButton *)self.EventButtons[i] setTitle:[object objectForKey:@"objectId"] forState:UIControlStateNormal];
            [(UIButton *)self.EventButtons[i] addTarget:self action:@selector(DetailEvent1:) forControlEvents:UIControlEventTouchUpInside];
            i++;
        }
    }
}];

И код действия DetailEvent1:

-(IBAction)DetailEvent1:(id)sender {
    TableDetailViewController *objDetail = [[TableDetailViewController alloc] initWithNibName:@"TableDetailViewController" bundle:nil];
    objDetail.??????? = self.????????;
}

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


person user3205645    schedule 28.01.2014    source источник
comment
Не забудьте отметить правильный ответ как принятый ответ на ваш вопрос, если какой-либо из ответов решил ваш вопрос. Спасибо!   -  person veducm    schedule 02.04.2015


Ответы (2)


Если вы используете раскадровку для создания перехода к вашему новому контроллеру представления, вы можете просто вызвать performSegueWithIdentifier внутри DetailEvent1. Затем установите заголовок VC и передайте любые данные, которые нужны новому VC, в prepareForSegue.

person Andy L.    schedule 28.01.2014

Чтобы установить заголовок нового представления как тот, что с кнопки, и нажать новый контроллер представления, этот код должен работать (при условии, что ваше текущее представление уже находится внутри UINavigationController) :

-(IBAction)DetailEvent1:(id)sender 
{
    TableDetailViewController *objDetail = [[TableDetailViewController alloc]
                                           initWithNibName: @"TableDetailViewController" 
                                                    bundle: nil];

    // Copy button's title
    objDetail.title = ((UIButton *)sender).titleLabel.text;

    // Push new view controller
    [self.navigationController pushViewController:objDetail animated:YES];
}
person veducm    schedule 28.01.2014
comment
Знаете ли вы, почему это дает мне сообщение об ошибке, указывающее, что свойство «заголовок» не найдено в объекте типа «UIButton»? - person user3205645; 28.01.2014
comment
Да! Виноват. Чтобы получить название кнопки, вы обращаетесь к ней как button.titleLabel.text. Я уже обновил ответ. Дайте мне знать, если это работает сейчас. - person veducm; 28.01.2014