代码之家  ›  专栏  ›  技术社区  ›  testing

从nsObject类调用PresentModalView控制器

  •  5
  • testing  · 技术社区  · 14 年前

    在我的子类 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];
    
    3 回复  |  直到 12 年前
        1
  •  2
  •   jv42    14 年前

    在没有视图控制器的情况下,我看不到显示模式视图的方法。必须在类中存储对uiviewController的引用,以便可以访问它。或者在AppDelegate中设置一个属性,您可以通过调用[[uiapplication sharedaplication]delegate]获取该属性;

        2
  •  7
  •   name-it    12 年前

    调用PresentModalView控制器的更好方法是, viewcontroller NSobject 类。呼叫 nsobject 函数来自 uiviewcontroller 这是带邮件的代码示例

    在视图控制器中//当前视图

    [nsobjectclassObject OpenMailComposer:self]; //这将使ViewController N对象

    在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]

        3
  •  0
  •   vodkhang    14 年前

    如果按住导航控制器或某个视图控制器,则可以显示模式视图控制器。

    你的是什么 myView ?它是一个视图,还是一个视图控制器。我希望它是一个视图控制器,否则,这就是您的代码不运行的原因。