在我的appDelegate.m中,我正在运行:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
NSLog(@"url recieved: %@", url);
NSLog(@"query string: %@", [url query]);
NSLog(@"host: %@", [url host]);
NSLog(@"url path: %@", [url path]);
NSDictionary *dict = [self parseQueryString:[url query]];
NSLog(@"query dict: %@", dict);
if([[url host] isEqual: @"success"]){
RegistrationController *rc = [RegistrationController alloc];
[rc regSuccess];
}
else if([[url host] isEqual: @"fail"]){
RegistrationController *rc = [RegistrationController alloc];
[rc regFailed];
}
return YES;
}
在我的registrationcontroller.m中,我有这个
-(void)regSuccess{
NSLog(@"REGSUCCESS!!!:D");
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
WaitController *rc = [storyboard instantiateViewControllerWithIdentifier:@"waitcontroller"];
[self.navigationController pushViewController:rc animated:NO];
}
-(void)regFailed{
NSLog(@"REGFAILED!!!:(");
[UIView animateWithDuration:1.0 animations:^{
_wheel.alpha = 0.0;
}];
}
当我在手机上连接到我的网址方案时,我被重定向到应用程序,控制台确实打印出REGSUCCESS !!!:D所以我知道registrationController.m中的方法被调用了。我遇到的问题是没有推送等待控制器,或者regSuccess方法中的任何其他对象操作都在工作。一直在寻找一个没有运气的几个小时的修复:(。请帮助。
注意: 我已经在registrationcontroller.h中实现了regSuccess和regFailed方法
谢谢!
答案 0 :(得分:0)
一个可能的原因是[self.navigationController pushViewController..]
可能无效,self.navigationController
可能不存在。在UINavigationController
,XIB
或以编程方式在某个位置引入Storyboard
非常重要。值得注意的是,如果您在代码中引用的故事板包含导航控制器,这将无法正常工作,因为您试图在控制器内部的导航控制器上推动控制器推了。重要的是验证如果在XCode中设置断点并查看regSuccess
方法,则应该在调试器中看到指向self.navigationController
的有效指针。如果你没有,你将无法推动任何东西。
如果您已确认导航控制器存在(并且它的视图层次结构本身已添加到应用程序的视图层次结构中),则接下来需要查看您尝试添加的视图本身。据推测,这将是rc.view
。如果不是添加到导航堆栈,您会调用:
[[self view] addSubview:[rc view]];
此外,通过使用调试器来检查变量或仅记录变量,请评估rc.view的属性。它的框架是什么?它应该出现在哪里?视图是否未正确创建?