2013-06-02 46 views
1

我在我的主視圖控制器中有一個文本字段..而我正在使用FPPopover在我的主視圖控制器上顯示另一個視圖控制器..我想從中獲取用戶的名稱FPPopoverController並放在我的主視圖控制器中的文本字段。我試過以下,但沒有工作..從不同的ViewController更新UITextField iOS

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; 

我還可以嘗試什麼? 謝謝。

回答

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

不要忘記刪除監聽器,以避免讓popover控制器保持一致ive(保留)。 – Daniel

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 header:

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

偉大的..謝謝你.. –

相關問題