我正在为我的一个具有 API 的应用程序创建一个 iPhone 客户端。我正在使用 GTMOAuth2 库进行身份验证。图书馆会使用正确的 url 为我打开一个 web 视图。但是我必须自己推动视图控制器。让我向您展示一些代码以使事情更清楚:
- (void)signInWithCatapult
{
[self signOut];
GTMOAuth2ViewControllerTouch *viewController;
viewController = [[GTMOAuth2ViewControllerTouch alloc] initWithAuthentication:[_account catapultAuthenticaiton]
authorizationURL:[NSURL URLWithString:kCatapultAuthURL]
keychainItemName:kCatapultKeychainItemName
delegate:self
finishedSelector:@selector(viewController:finishedWithAuth:error:)];
[self.navigationController pushViewController:viewController animated:YES];
}
我有一个“加号”/“添加”按钮,我动态添加到视图中并指向该方法:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(signInWithCatapult)];
当我按下“添加”按钮时,应该发生的是打开带有动画的 Web 视图,然后将帐户添加到填充表格视图的帐户实例变量中。如果我添加一个帐户,这可以正常工作,但是一旦我尝试添加第二个帐户,屏幕就会变黑,并且控制台中会出现两个错误:
nested pop animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
我发现避免这个问题的唯一方法是在推动视图控制器时禁用动画。
请问我做错了什么?