从NSObject类调用presentModalViewController

tes*_*ing 5 iphone cocoa-touch objective-c modalviewcontroller

在我的子类中,NSObject我想称之为

    [[self navController] presentModalViewController:myView animated:YES];
Run Code Online (Sandbox Code Playgroud)

但我的尝试都没有成功.如果我不在子类中,如何调用模态视图UIViewController

解:

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

nam*_*-it 7

调用presentModalViewController的更好方法是,传递viewcontrollerNSobject类.nsobjectuiviewcontroller 这里调用函数这是带有邮件示例的代码

在视图中控制//您当前的视图

[nsobjectclassObject OpenMailComposer:self];//这会将viewcontroller带到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];
}
Run Code Online (Sandbox Code Playgroud)

NSObject class如果您被解雇,可以执行以下操作

[viewControllertoShow dismissViewControllerAnimated:YES]


jv4*_*v42 2

我没有找到在没有 ViewController 的情况下显示模式视图的方法。您必须在类中存储对 UIViewController 的引用,以便可以访问它。或者在 AppDelegate 中设置一个属性,您可以通过调用 [[UIApplication sharedApplication] delegate]; 来获取该属性。