5

私のサブクラスでは、次のNSObjectようなものを呼び出したいと思います

    [[self navController] presentModalViewController:myView animated:YES];

しかし、私の試みはどれも成功しませんでした。のサブクラスに属していない場合、どうすればモーダルビューを呼び出すことができUIViewControllerますか?

解決:

#import "myProjectNameAppDelegate.h"
// ...
MyViewController *myView = [[MyViewController alloc] init];
myProjectNameAppDelegate *appDelegate = (myProjectNameAppDelegate *)[[UIApplication sharedApplication] delegate];
[[appDelegate navController] presentModalViewController:myView animated:YES];
4

3 に答える 3

7

presentModalViewControllerを呼び出すためのより良い方法は、クラスに渡すviewcontrollerことです。ここから関数をNSobject呼び出します メールの例を含むコードですnsobjectuiviewcontroller

ビューコントローラで//現在のビュー

[nsobjectclassObject OpenMailComposer:self];//これによりビューコントローラがNSobjectクラスに移動します

NSObjectクラス内//クラスを共有している可能性があります

-(void)OpenMailComposer:(UIViewController*)view
{

    viewControllertoShow = view; // viewControllertoShow is UIVIewcontroller object
    MFMailComposeViewController *mailView = [[MFMailComposeViewController alloc]init];
    mailView.mailComposeDelegate = self;
    [mailView setSubject:@"Hey! check this out!"];
  [viewControllertoShow presentModalViewController:mailView animated:YES];
}

あなたから解雇するNSObject classために、次のことができます

[viewControllertoShow dismissViewControllerAnimated:YES]

于 2012-08-14T13:47:20.450 に答える
2

ViewControllerなしでモーダルビューを表示する方法がわかりません。UIViewControllerへの参照をクラスに保存して、アクセスできるようにする必要があります。または、AppDelegateにプロパティを設定します。これは、[[UIApplicationsharedApplication]デリゲート]を呼び出すことで取得できます。

于 2010-09-21T12:37:17.213 に答える
0

NavigationControllerまたは一部のviewControllerを押したままにすると、モーダルビューコントローラーを表示できます。

あなたは何myViewですか?それはビューですか、それはviewControllerですか。それ以外の場合はビューコントローラであることを願っています。これがコードが実行されない理由です

于 2010-09-21T13:15:55.127 に答える