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

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

Я настраиваю табличное представление внутри контроллера навигации обычным способом:

// create popover
    if (self.popoverController == nil) {

    filesViewController = [[[MyTableViewController alloc] initWithFiles:fileList] autorelease];

    UINavigationController *navCtrl = [[[UINavigationController alloc] initWithRootViewController:filesViewController] autorelease];

    self.popoverController = [[UIPopoverController alloc] initWithContentViewController:navCtrl];

        self.popoverController.delegate = self;

        // resize popover
        self.popoverController.popoverContentSize = CGSizeMake(320.0, 44 + [fileList count] * 44);
    }

Все работает нормально, и я передаю массив имен файлов (fileList) в табличное представление, которое хранится в табличном представлении в виде массива с именем listOfFiles. Представление таблицы отображает имена файлов, и когда пользователь выбирает их, я хочу передать это имя файла обратно в контроллер основного представления. Однако я не могу получить какие-либо сообщения, идущие от метода didSelectRowAtIndexPath табличного представления к основному VC. Я перепробовал всевозможные выходы, идущие в разных направлениях, и попытался создать новый объект в didSelectRowAtIndexPath для обработки имени файла, поступающего из табличного представления. Я могу передать имя файла новому объекту, но когда я пытаюсь отправить его в основной VC, оно снова равно нулю. Все, что я отправляю в свой основной VC, пока это всплывающее окно активно, становится нулевым.

    - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {

    NSLog(@"%@", handler.addressForImageFile);

    self.popoverController = nil;
    [self.popoverController release];
}

Есть ли какая-то причина, по которой мой основной VC не получит ничего, кроме нулевых объектов из моего табличного представления? Я провел дни, пробуя так много разных вещей. Я чувствую, что в моих знаниях о том, как работают всплывающие окна, есть фундаментальный пробел. Наверняка есть простой способ отправить строку обратно в мой основной VC, когда она выбрана в табличном представлении?

Большое спасибо за любую помощь!


person beev    schedule 05.05.2011    source источник


Ответы (1)


Возможно, есть гораздо лучший способ сделать это, но в зависимости от цели передачи строки одним из способов может быть использование NSUserDefaults.

person Thomas K    schedule 05.05.2011
comment
Спасибо. В конце концов я решил эту проблему, используя свой основной контроллер представления в качестве источника данных и делегата для табличного представления. Хотел бы я подумать об этом несколько дней назад и избавить себя от множества мучений! - person beev; 07.05.2011
comment
Стоит отметить, что если вы в конечном итоге используете контроллер основного представления в качестве источника/делегата данных, этот ответ может сэкономить вам время на поиск в Google — stackoverflow. com/a/11068532/953105 - person paulrehkugler; 15.05.2013