2011-05-18 62 views
1

在View Controller中,我有一个按钮用于创建包含TableView的popOverCOntroller。当用户从该tableView中选择一些内容时,我希望ViewController中的TextField使用来自tableView和popOverCOntroller的文本来填充以显示ViewController。从弹出窗口中显示的TableView中的单元格填充textField

popOverCOntroller,ViewController,TableView代码都可以工作。我无法弄清楚如何让文本回到原来的ViewController。

谢谢,我知道这是抽象的。有人可以通过我失踪的步骤来说说我吗?

埃里克

回答

1

可以考虑通过引用文本字段,或通过TableViewController的定制init方法一个可变的字符串。

如果您选择传递文本字段,则可以在用户选择行并关闭弹出视图时直接分配值。如果你传递一个可变字符串,你可以设置它的值,稍后在popover的委托方法中设置文本字段的值。

让我知道你是否需要一些代码去使用它。

编辑

@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]; 
} 
+0

如何驳回didSelectRowAtIndexPath方法方法中的酥料饼?代码将会非常有用。所选行包含来自核心数据的数据,调用数据event.title – Eric 2011-05-18 17:35:21

+0

我已更新我的答案。 – 2011-05-18 18:15:38

+0

popOverController.delegate = self给我一个错误,说它是相互冲突的类型,你认为这意味着什么? – Eric 2011-05-18 18:46:01