第一个 UITableView 显示在从应用程序的 RootViewController 调用的 Popover 中。
我需要导航到同一个弹出框内的另一个 UITableView。如果您只是实例化第二个 UITableView 的对象并从第一个推送它,这很容易做到。
在下一段中,我认为一些事实是理所当然的,如果我错了,请纠正我。
这里的问题是这个过程应该在 appDelegate 内部完成。这是因为我正在实现 Dropbox API,并且我需要在登录过程完成后立即完成 pushViewController,这意味着必须在 application:handleOpenURL 内完成通过 UITableViews 的导航。我假设 application:handleOpenURL 必须在那里被调用,这就是为什么我还假设 pushViewController 必须在那里完成以便在 Dropbox API 验证窗口出现后完成导航,而不必让用户做任何其他事情.
这就是我的代码的样子:
AppDelegate.h
@interface AppDelegate : NSObject <UIApplicationDelegate>{
UINavigationController *navigationController;
NSString *relinkUserId;
UIWindow *window;
TableViewControllerForStorageList *rootViewController;
ViewController *viewController;
}
@property (nonatomic, strong) IBOutlet UIWindow *window;
@property (nonatomic, strong) IBOutlet UINavigationController *navigationController;
@property (nonatomic, strong) IBOutlet TableViewControllerForStorageList *rootViewController;
@property (nonatomic, strong) IBOutlet ViewController *viewController;
AppDelegate.m
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
if ([[DBSession sharedSession] handleOpenURL:url]) {
if ([[DBSession sharedSession] isLinked]) {
[(TableViewControllerForStorageList *)self.window.rootViewController PushView];
}
return YES;
}
return NO;
}
TableViewControllerForStorageList.h
-(void)PushView;
TableViewControllerForStorageLost.m
-(void)PushView
{
TableViewControllerIpadStorage *tableViewControllerIpadStorage = [[TableViewControllerIpadStorage alloc]initWithNibName:@"TableViewControllerIpadStorage" bundle:Nil];
[self.navigationController pushViewController:tableViewControllerIpadStorage animated:YES];
}
当然,我确定 Application:HandleOpenURL 正在运行,但是当从那里调用 PushView 时,错误是 [ViewController PushView]: unrecognized selector sent to instance
那么,如何从那里进行导航呢?我缺少关于目标 c 的哪些基础知识?