Objective c 从局部视图推送另一个视图
我有一个大问题:在方法DidSelectRowatingIndexPath上,我总是将self.navigationController设置为null。我有一个基于SplitViewController的项目,我想在细节表视图中选择一行时推送另一个视图 架构:Objective c 从局部视图推送另一个视图,objective-c,uinavigationcontroller,uisplitviewcontroller,ipad,Objective C,Uinavigationcontroller,Uisplitviewcontroller,Ipad,我有一个大问题:在方法DidSelectRowatingIndexPath上,我总是将self.navigationController设置为null。我有一个基于SplitViewController的项目,我想在细节表视图中选择一行时推送另一个视图 架构: LoginView->SplitViewController->Master ->Detail->AnotherView 我的AppDelegate.
LoginView->SplitViewController->Master
->Detail->AnotherView
我的AppDelegate.m:加载登录表单
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Initialize the app window
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
AuthentificationViewController *authentificationViewController =[[AuthentificationViewController alloc] initWithNibName:@"AuthentificationView" bundle:nil];
self.window.rootViewController=authentificationViewController;
[authentificationViewController setModalTransitionStyle:UIModalTransitionStylePartialCurl];
[self.splitViewController presentModalViewController:authentificationViewController animated:YES];
[self.window makeKeyAndVisible];
return YES;
}
- (IBAction)btnCancel:(id)sender {
AppDelegate* app_delegate=[[UIApplication sharedApplication] delegate];
//self.window = [[UIApplication sharedApplication] keyWindow];
app_delegate.window.rootViewController= app_delegate.splitViewController;
}
AppDelagate的内部接口我有以下属性:
@property (nonatomic, retain) IBOutlet UISplitViewController *splitViewController;
@property (nonatomic, retain) IBOutlet UINavigationController *navController;
方法句柄,当我们单击登录表单上的“取消”按钮时
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Initialize the app window
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
AuthentificationViewController *authentificationViewController =[[AuthentificationViewController alloc] initWithNibName:@"AuthentificationView" bundle:nil];
self.window.rootViewController=authentificationViewController;
[authentificationViewController setModalTransitionStyle:UIModalTransitionStylePartialCurl];
[self.splitViewController presentModalViewController:authentificationViewController animated:YES];
[self.window makeKeyAndVisible];
return YES;
}
- (IBAction)btnCancel:(id)sender {
AppDelegate* app_delegate=[[UIApplication sharedApplication] delegate];
//self.window = [[UIApplication sharedApplication] keyWindow];
app_delegate.window.rootViewController= app_delegate.splitViewController;
}
当我们选择一行时,我们有以下方法:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if([indexPath row] == 0)
{
// show add bookmark controller
BookmarkEditorController* bookmarkEditorController = [[[BookmarkEditorController alloc] initWithBookmark:[[ComputerBookmark alloc] initWithBaseDefaultParameters]] autorelease];
[bookmarkEditorController setTitle:NSLocalizedString(@"Ajouter Connexion", @"Add Connection title")];
[self.navigationController pushViewController:bookmarkEditorController animated:YES];
}
但是,当我选择一行并且navigationController为零时,什么也没有发生。我如何修复它
提前谢谢
编辑:
看看这个
,
看看这个
,
Bonnie我遵循链接,但我有相同的错误“self.navigationController”是空的,你不必像现在一样在Master's Navigation中推视图,您必须将SplitViewControllers detailView设置为导航控制器,然后立即将视图推到detailNavigation而不是self.navigation这是UINavigationController*navController=[[UINavigationController alloc]init]的重要部分;[导航控制器pushViewController:localdetailViewController动画:是];TutorialSplitViewAppDelegate*委托=[[UIApplication sharedApplication]委托];NSArray*viewControllers=[[NSArray alloc]initWithObjects:[delegate.splitViewController.viewControllers objectAtIndex:0],navController,nil];delegate.splitViewController.viewControllers=viewControllers;Bonnie我编辑主题请查看我的方法并告诉我是否正确尝试添加导航控制器只需将detailView添加到Splitview ViewController的数组NSArray*ViewController=[[NSArray alloc]initWithObjects:[delegate.splitViewController.viewControllers objectAtIndex:0],bookmarkEditorController,nil];delegate.splitViewController.viewControllers=viewControllers;Bonnie我遵循链接,但我有相同的错误“self.navigationController”是空的,你不必像现在一样在Master's Navigation中推视图,您必须将SplitViewControllers detailView设置为导航控制器,然后立即将视图推到detailNavigation而不是self.navigation这是UINavigationController*navController=[[UINavigationController alloc]init]的重要部分;[导航控制器pushViewController:localdetailViewController动画:是];TutorialSplitViewAppDelegate*委托=[[UIApplication sharedApplication]委托];NSArray*viewControllers=[[NSArray alloc]initWithObjects:[delegate.splitViewController.viewControllers objectAtIndex:0],navController,nil];delegate.splitViewController.viewControllers=viewControllers;Bonnie我编辑主题请查看我的方法并告诉我是否正确尝试添加导航控制器只需将detailView添加到Splitview ViewController的数组NSArray*ViewController=[[NSArray alloc]initWithObjects:[delegate.splitViewController.viewControllers objectAtIndex:0],bookmarkEditorController,nil];delegate.splitViewController.viewControllers=viewControllers;