从 Popover 中显示的 TableView 中的单元格填充 textField
Posted
技术标签:
【中文标题】从 Popover 中显示的 TableView 中的单元格填充 textField【英文标题】:Populating textField from cell in TableView shown in Popover 【发布时间】:2011-05-18 17:06:42 【问题描述】:在视图控制器中,我有一个按钮,用于创建包含 TableView 的 popOverCONtroller。当用户从该 tableView 中选择某些内容时,我希望 ViewController 中的 TextField 使用 tableView 中的文本填充,并且 popOverCONtroller 关闭显示 ViewController。
popOverCONtroller、ViewController、TableView 代码都可以工作。我不知道如何将文本恢复到原始 ViewController。
谢谢,我知道这是抽象的。有人可以告诉我我缺少的步骤吗?
埃里克
【问题讨论】:
【参考方案1】:您可以考虑通过 TableViewController 的自定义 init 方法将引用传递给文本字段或可变字符串。
如果您选择传递文本字段,则可以在用户选择一行时直接赋值并关闭弹出视图。如果您传递一个可变字符串,您可以设置它的值,然后在弹出框的委托方法中设置文本字段的值。
如果您需要一些代码,请告诉我。
编辑
@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];
【讨论】:
如何在 didSelectRowAtIndexPath 方法中关闭 popOver?代码真的很有帮助。选中的行包含来自 Core Data 的数据,调用数据 event.title popOverController.delegate = self 给我一个错误,说它是冲突的类型,你认为这意味着什么?以上是关于从 Popover 中显示的 TableView 中的单元格填充 textField的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Popover 的 TableView 选择中禁用动画?