StoryBoard 頁面傳值

如圖新建一個viewController和DetailViewControlleride

VC 和DetailVC 聯線的Idetnifier 設置爲:GoDetailVCspa

ViewController主要代碼
- (IBAction)signInButtonTouched:(id)sender { [self performSegueWithIdentifier:@"GoDetailVC" sender:self]; } #pragma mark - prepare segue // A頁面傳值到B頁面 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { [super prepareForSegue:segue sender:sender]; if ([segue.identifier isEqualToString:@"GoDetailVC"]) { DetailViewController *detailVC = segue.destinationViewController; detailVC.passValue = self.usernameTextField.text; } } // B頁面傳值到A頁面 -(IBAction)done:(UIStoryboardSegue *)segue{ if ([segue.sourceViewController isKindOfClass:[DetailViewController class]]) { DetailViewController * svc = (DetailViewController *)segue.sourceViewController; self.passwordTextField.text = svc.textField.text; } }

在StoryBoard中 DetailViewController的Done按鈕 Action關聯到 viewController的done方法 如圖code

1.在VC頁面中第一個textField中輸入值 點擊 Sing in 按鈕就會把值傳到DetailViewController 的textField中顯示出來。orm

2.在DetailViewController textField中修改值 點擊Done 按鈕就會把值回傳到ViewController中blog

 

若是 是Present 方式要怎麼傳值勒。如圖it

用以下代碼確定傳值行不通
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { [super prepareForSegue:segue sender:sender]; if ([segue.identifier isEqualToString:@"GoDetailVC"]) { DetailViewController *detailVC = segue.destinationViewController; // 由於這取出來的是NavigationController 不是DetailViewController
detailVC.passValue = self.usernameTextField.text; 
}
}

因此修改成以下:
// A頁面傳值到B頁面
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    [super prepareForSegue:segue sender:sender];
    if([[segue identifier] isEqualToString:@"GoDetailVC"])
    {
        NSArray *viewControllerArray = [segue.destinationViewController viewControllers];
        DetailViewController *detailVC = [viewControllerArray objectAtIndex:0];
        detailVC.passValue = self.usernameTextField.text;
    }
}
相關文章
相關標籤/搜索