1

我的主视图控制器中有一个文本字段。我正在使用FPPopover在我的主视图控制器顶部显示另一个视图控制器。我想从 FPPopoverController 获取用户的名称并在我的主视图中放入一个文本字段视图控制器。我尝试了以下但没有工作..

 MasterViewController *vc = [[MasterViewController alloc] init];
  vc.nameTextField.text = self.nameField.text;


    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
    MasterViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"MasterViewController"];

    vc.nameTextField.text = self.nameField.text;

我还能尝试什么?谢谢。

4

2 回答 2

1

我会在这里简单地使用委托。例如,您可以设置一个简单的协议,您的弹出视图控制器应该有一个委托,它可以是您的主视图控制器,您在主视图控制器上实现协议方法。

创建弹出框控制器时,请确保将主视图控制器分配为该控制器的委托,例如:

协议:

@protocol MyPopoverDelegate <NSObject>

@required
- (void)popoverDidFinishTypingName:(MyPopoverViewController *)myPopover;

@end

主视图控制器:

- (void)popoverDidFinishTypingName:(MyPopoverViewController *)myPopover{
    self.nameTextField.text = myPopover.textField.text;
    // dismiss the popover here.
}

MyPopoverViewController 标头:

@interface MyPopoverViewController

@property(weak) id<MyPopoverDelegate> delegate;
@property(weak) UITextField *textField;

@end

MyPopoverViewController 实现摘录:

@implementation MyPopoverViewController

- (void)doneButtonPressed:(id)sender{
    if(!self.delegate)
        return;
    [self.delegate popoverDidFinishTypingName:self];
}

@end

当您从主视图控制器创建弹出框时,您需要将自己设置为委托:

MyPopoverDelegate *popoverController = [[MyPopoverDelegate alloc] init];
popoverController.delegate = self;
[...]
于 2013-06-02T00:46:00.253 回答
1

委派是我认为最好的方法,但最简单的方法是使用通知。

MyPopoverViewController 实现

- (void)doneButtonPressed:(id)sender{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"notification"
                                                        object:self
                                                      userInfo:@{@"aKey":self.textfield.text} ];
}

在您的主视图控制器 viewdidload 方法中

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(updateTextField:)
                                             name:@"notification"
                                           object:nil];

最后添加这个方法..

- (void)updateTextField:(NSNotification *)notification {
     self.nameTextField.text = [notification.userInfo objectForKey:@"aKey"];
}
于 2013-06-02T22:33:26.283 回答