UIPopover и UITableView обмен данными - PullRequest
2 голосов
/ 20 мая 2011

У меня есть UITableView в UINavigationController. На панели навигации у меня есть кнопка под названием добавить. Когда эта кнопка нажата, она представляет UIPopoverController, где пользователь может вводить данные для добавления в виде новой строки / ячейки в UITableView. Моя проблема заключается в том, как я могу добавить новую ячейку в UITableView из UIPopover? Передать ли данные массива корневому контроллеру UIPopOver?

1 Ответ

4 голосов
/ 20 мая 2011

Есть два решения этого вопроса, о которых я знаю.Один из них - отправить уведомление от всплывающего окна на корневой контроллер и применить необходимый код для обновления tableView в методе handleNotification.

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

@protocol PopoverDelegate
- (void)addNewCell;  // you can add any information you need to pass onto this if necessary such as addNewCellWithName:(NSString *)name, etc.
@end

@interface MyPopoverViewController..... {
    id <PopoverDelegate> delegate;
    // the rest of your interface code;
}
@property (nonatomic, retain) id delegate;
// any other methods or properties;
@end

Затем в заголовочном файле контроллера корневого представления вам нужно добавить делегата

@interface RootViewController .... <PopoverDelegate> {

Затем в вашем корневом представленииФайл реализации контроллера, назначьте делегат popover при его создании.Например:

MyPopoverViewController *vc = [[MyViewController alloc] init];
vc.delegate = self;  // this is where you set your protocol delegate
myPopover = [[UIPopoverController alloc] initWithContentViewController:vc];
myPopover.delegate = self;
[vc release];

Наконец, вы добавите свой метод протокола где-нибудь в коде

- (void)addNewCell {
    // do what you want with the tableView from here
}

Извините, это немного долго.Я просто хотел убедиться, что я был тщательным.Надеюсь, это поможет

...