【发布时间】:2014-04-11 03:34:47
【问题描述】:
目标:为了连接到 iOS Google Drive,将 iOS Google OAuth 视图控制器包装在以编程方式创建的导航控制器中,并添加一个取消按钮以使用户能够取消 Google OAuth 进程,应该他们选择这样做。
问题:虽然我可以成功地将 OAuth 视图控制器包装在导航控制器中,但我似乎无法添加导航项,例如所需的取消按钮。
我添加了一个导航控制器,封装了 Google Drive OAuth 视图控制器,如下...
GTMOAuth2ViewControllerTouch *authViewController = nil;
if (!self.isAuthorized) {
SEL selectorFinish = @selector(viewController:finishedWithAuth:error:);
SEL selectorButtonCancel = @selector(buttonCancelTapped:);
authViewController = [[GTMOAuth2ViewControllerTouch alloc] initWithScope:kGTLAuthScopeDrive
clientID:kClientID
clientSecret:kClientSecret
keychainItemName:kKeychainItemName
delegate:self
finishedSelector:selectorFinish];
UINavigationController *navController = [[UINavigationController alloc] init];
[navController addChildViewController:authViewController];
[self.parentTVC presentViewController:navController animated:YES completion:nil];
}
为清楚起见,变量parentTVC 是一个公共属性,
@property (nonatomic, strong) UITableViewController *parentTVC;
并且是使用自定义的init方法设置的,如下...
- (id)initWithParentTVC:(UITableViewController *)tvc {
self = [super init];
[self setParentTVC:tvc];
return self;
}
我试图将UINavigationItems 添加到UINavigationController 实例navController,但这不起作用,相反我似乎被UIView 与两个小按钮()卡住了在 nib 文件 GTMOAuth2ViewTouch.xib 中,图片包含在下面...
我已通读 GTL 文件 GTMOAuth2ViewControllerTouch.m 以尝试查看是否有可以使用的方法或是否可以通过子类化来覆盖,但我对自己的尝试没有信心。
我最好的猜测是任何导航控制器都包装了由GTMOAuth2ViewControllerTouch.m...的代码设置的 OAuth 视图控制器...
- (void)setUpNavigation {
rightBarButtonItem_.customView = navButtonsView_;
self.navigationItem.rightBarButtonItem = rightBarButtonItem_;
}
请帮忙?
【问题讨论】:
-
抱歉...刚刚在这里找到了答案:stackoverflow.com/questions/21453691/…
-
请将您的答案标记为正确。会对其他人有所帮助。
-
谢谢@SHAD。我已经尝试过了,但显然我必须等待 2 天......?同时,为了确认,这个答案是正确的,并且在我的应用程序中有效。
标签: objective-c uinavigationcontroller google-drive-api google-oauth uinavigationitem