Ios 在演示过程中演示?尝试在使用parse登录facebook后显示新视图。
我试图展示一个我已经为用户制作的UITableView,以便用户输入数据并保存在解析中。我很确定我没有显示导航视图 当我登录时,我得到错误信息:Ios 在演示过程中演示?尝试在使用parse登录facebook后显示新视图。,ios,objective-c,xcode,Ios,Objective C,Xcode,我试图展示一个我已经为用户制作的UITableView,以便用户输入数据并保存在解析中。我很确定我没有显示导航视图 当我登录时,我得到错误信息: Checklists[4516:c07] Warning: Attempt to present <ChecklistsViewController: 0x10525e90> on <UINavigationController: 0x9648270> while a presentation is in progress!
Checklists[4516:c07] Warning: Attempt to present <ChecklistsViewController: 0x10525e90>
on <UINavigationController: 0x9648270> while a presentation is in progress!
检查表[4516:c07]警告:试图显示
演示正在进行时打开!
谢谢你的帮助
#import "LoginViewController.h"
#import "ChecklistsViewController.h"
#import "SetupViewController.h"
#import <Parse/Parse.h>
@interface LoginViewController ()
@end
@implementation LoginViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
PFLogInViewController *login = [[PFLogInViewController alloc] init];
login.fields = PFLogInFieldsFacebook;
// Need to set the delegate to be this controller.
login.delegate = self;
login.signUpController.delegate = self; //signUpController is a property on the login view controller
[self presentModalViewController:login animated:NO];
}
- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user
{
[self dismissModalViewControllerAnimated:YES];
NSLog(@"Successfully logged in.");
ChecklistsViewController *controller = [[ChecklistsViewController alloc] initWithStyle:UITableViewStylePlain];
controller.modalTransitionStyle = UITableViewStylePlain;
[self presentModalViewController:controller animated:YES];
}
#导入“LoginViewController.h”
#导入“ChecklistsViewController.h”
#导入“SetupViewController.h”
#进口
@接口LoginViewController()
@结束
@实现LoginViewController
-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
{
self=[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
如果(自我){
//自定义初始化
}
回归自我;
}
-(无效)视图显示:(BOOL)动画
{
[超级视图显示:动画];
PFLogInViewController*login=[[PFLogInViewController alloc]init];
login.fields=PFLogInFieldsFacebook;
//需要将委托设置为此控制器。
login.delegate=self;
login.signUpController.delegate=self;//signUpController是登录视图控制器上的一个属性
[自我呈现Modalviewcontroller:登录动画:否];
}
-(无效)logInViewController:(PFLogInViewController*)logInController didLogInUser:(PFUser*)用户
{
[自我解散Modalviewcontrolleranimated:是];
NSLog(@“已成功登录”);
ChecklistsViewController*controller=[[ChecklistsViewController alloc]initWithStyle:UITableViewStylePlain];
controller.modalTransitionStyle=UITableViewStylePlain;
[self-presentModalViewController:控制器已设置动画:是];
}
此方法已被弃用了很长一段时间
presentModalViewController:animated:
你应该用这个来代替
presentViewController:animated:completion:
这个也一样
dismissModalViewControllerAnimated:
现在我们用这个
dismissViewControllerAnimated:completion:
当我们不需要完成块时,我们只需将其设置为nil
但在你的情况下,完成块可以解决你的问题。。。它确保了事件的正确顺序,即在解雇完成之前不会进行演示
- (void)logInViewController:(PFLogInViewController *)logInController
didLogInUser:(PFUser *)user
{
[self dismissViewControllerAnimated:YES completion:^{
NSLog(@"Successfully logged in.");
ChecklistsViewController *controller =
[[ChecklistsViewController alloc] initWithStyle:UITableViewStylePlain];
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:controller animated:YES completion:nil];
}];
}
[NB-modalTransitionStyle在您的原始代码中不正确,我也对其进行了更改。感谢您指出这一点]谢谢!非常彻底。如果您不介意的话,我还有一个错误,它是在实现您的解决方案后突然出现的。“警告:试图在其视图不在窗口层次结构中的对象上显示!”尚未看到此选项。@STANGMMX-我需要了解有关您的应用程序的更多信息-它将引用什么
UINavigationController
(或子类)?也许会提出另一个问题,展示更多的信息,比如你的故事板,任何其他线索。。尽管有一件事需要尝试,那就是将代码移出ViewDidDisplay,但当您关闭登录屏幕时调用ViewDidDisplay时,您会遇到一种混乱的情况。或者做一个BOOL标志,以确保在您取消登录后不会尝试重新显示您的登录。