基于Apple的GLPaint代码,我的“摇动”工作正常(使用motionEnded)。当用户摇动设备(运行3.0及更高版本)时,我想使用presentModalViewController以模态方式打开视图控制器。
在我的appdelegate中,我收到了通知(根据GLPaint示例代码):
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shakeToOpenHiddenScreen) name:@"shake" object:nil];
在我的shakeToOpenHiddenScreen中,我只是想以模态方式打开视图'x',但我认为我的appdelegate不会响应presentModalViewController。
有解决方法吗?
答案 0 :(得分:1)
要使用presentModalViewController,您必须从UIViewController类或子类中使用它:
例如: //RootViewController.m [self.navigationController presentModalViewController:loginRegView animated:YES];
您可以通过在应用代理中定义导航控制器来解决此问题:
//yourApp_comAppDelegate.h
UINavigationController *nav;
...
@property(nonatomic,retain) UINavigationController *nav;
并合成它
@syntetize nav;
要使用presentModalViewController,您必须从UIViewController类或子类中使用它:
例如:
//RootViewController.m
[self.navigationController presentModalViewController:loginRegView animated:YES];
您可以通过在应用代理中定义导航控制器来解决此问题:
//yourApp_comAppDelegate.h
UINavigationController *nav;
...
@property(nonatomic,retain) UINavigationController *nav;
合成它
//yourApp_comAppDelegate.m
@synthesize nav;
现在您可以使用以下方法:
//yourApp_comAppDelegate.m
[nav presentModalViewController:yourView animated:YES];
但是,首先你必须将它分配到某个地方,我将在RootViewController
中进行//RootViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
app = (yourApp_comAppDelegate *) [[UIApplication sharedApplication] delegate];
app.nav = self.navigationController
}
应该有用,让我知道:)。
答案 1 :(得分:0)
这是UIViewController上的一个方法,因此您应该可以从appDelegate访问已保存的视图控制器,或者设置通知以调用一个(addObserver:someVC)。
“shake”不是标准的通知名称,因此应用程序中的其他位置应该有一些代码可以发布此通知,可能也是从GLPaint示例中复制的。