我的主视图控制器中有一个文本字段..我正在使用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;
我还能尝试什么? 感谢。
答案 0 :(得分:1)
我只想在这里使用代表团。例如,您可以设置一个简单的协议,您的popover视图控制器应该有一个委托,它可以是您的主视图控制器,您可以在主视图控制器上实现协议方法。
创建弹出控制器时,请确保将主视图控制器指定为该控制器的委托,例如:
协议:
@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;
[...]
答案 1 :(得分: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"];
}