Вы можете рассмотреть возможность передачи ссылки на текстовое поле или изменяемую строку с помощью пользовательского метода init TableViewController.
Если вы решите передать текстовое поле, вы можете напрямую присвоить значение, когда пользователь выбираетгрести и отклонять вид поповера.Если вы передаете изменяемую строку, вы можете установить ее значение, а затем в методе делегата поповера установить значение текстового поля.
Дайте мне знать, если вам нужен какой-то код, чтобы идти с ним.
Редактировать
@interface DataViewController : UITableViewController {
UIPopoverController *popOverController;
UILabel *labelToUpdate;
}
@property (nonatomic, assign) UIPopoverController *popOverController;
@property (nonatomic, retain) UILabel *labelToUpdate;
@end
Вам необходимо сохранить слабую ссылку наUIPopOverController, если вам нужно программно закрыть его.labelToUpdate
- это метка, которую мы собираемся обновить.
@implementation DataViewController
@synthesize popOverController;
@synthesize labelToUpdate;
- (void)dealloc
{
[labelToUpdate release];
[super dealloc];
}
....
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
self.labelToUpdate.text = event.title;
[self.popOverController dismissPopoverAnimated:YES];
}
@end
В делегате UIPopOverController, который будет родительским контроллером представления, сделайте это -
// method trigged by button press
- (IBAction)showChoice {
DataViewController *viewController = [[DataViewController alloc] initWithNibName:nil bundle:nil];
UIPopoverController *popOverController = [[UIPopoverController alloc] initWithContentViewController:viewController];
popOverController.delegate = self;
viewController.labelToUpdate = self.outputLabel;
viewController.popOverController = popOverController;
[popOverController presentPopoverFromRect:self.button.frame
inView:self.window // Since I did this of the application delegate
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
[popoverController release];
}