@Scottの発言に何かを加えたかっただけです。彼の答えは間違いなく、Storyboards、iOS 7および8(そしてすぐに9)でこれを行う最も簡単で最も受け入れられた方法です。
ストーリーボードにビューコントローラを確実に追加し、@ Scottで説明されているように埋め込むのが正しい方法です。
次に、ソースビューコントローラーからターゲット(モーダルで表示するもの)にコントロールをドラッグしてセグエを追加し、セグエの種類の選択肢が表示された小さなビューが表示されたら、「現在のモーダル」を選択します。おそらく名前も付けておくとよいでしょう(以下の例では「presentMyModalViewController」を使用しています)。
欠けていた必要のある1つは、@ Scottの場合で、ナビゲーションコントローラーに埋め込まれている、モーダル表示されたビューコントローラーに実際にデータを渡したい場合です。
segue.destinationViewControllerを取得すると、UINavigationControllerに埋め込まれたコントローラーではなく、UINavigationControllerになります。
だから、ナビゲーションコントローラー内の埋め込まれたビューコントローラーを取得するには、次のようにします。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"presentMyModalViewController"]) {
// This could be collapsed, but it's a little easier to see
// what's going on written out this way.
// First get the destination view controller, which will be a UINavigationController
UINavigationController *nvc = (UINavigationController *)segue.destinationViewController;
// To get the view controller we're interested in, grab the navigation controller's "topViewController" property
MyModalViewController *vc = (EmailReceiptViewController *)[nvc topViewController];
// Now that we have the reference to our view controller, we can set its properties here:
vc.myAwesomeProperty = @"awesome!";
}
}
お役に立てれば!