在我的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];
答案 0 :(得分:7)
调用presentModalViewController的更好方法是将viewcontroller
传递给NSobject
类。从nsobject
调用uiviewcontroller
函数
这是带有邮件示例的代码
在视图控制器中//当前视图
[nsobjectclassObject OpenMailComposer:self];
//这会将viewcontroller带到NSobject
class
在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]
答案 1 :(得分:2)
我没有看到在没有ViewController的情况下显示模态视图的方法。您必须在类中存储对UIViewController的引用,以便可以访问它。或者在AppDelegate中设置一个属性,您可以通过调用[[UIApplication sharedApplication] delegate]来获取该属性;
答案 2 :(得分:0)
如果你持有navigationController或一些viewController,你可以呈现一个模态视图控制器。
你的myView
是什么?它是一个视图,它是一个viewController。我希望它是一个viewcontroller,否则,这就是你的代码无法运行的原因