Ios 如何在拆分视图中将不同视图加载到详图视图

Ios 如何在拆分视图中将不同视图加载到详图视图,ios,uisplitviewcontroller,ipad,Ios,Uisplitviewcontroller,Ipad,我想知道如何从rootview将不同的视图加载到detailView中 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == 0) { SecondViewController *svc = [[SecondViewController alloc] init];

我想知道如何从rootview将不同的视图加载到detailView中

   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {

        if (indexPath.row == 0) {
            SecondViewController *svc = [[SecondViewController alloc] init];

            //[self.navigationController pushViewController:svc animated:YES]; 

        }


}
splitviewcontroller有一个包含两个视图的数组,一个是根视图,另一个是局部视图,您可以更改此数组中的视图。如果您alloc和init一个视图,并将其替换为这两个视图中的任何一个,则此视图将替换splitviewcontroller中的当前视图

使用此代码为rootview的不同单元格加载不同的视图。将rootview的DidSelectRowatineXpath方法更改如下:

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    UIViewController  *localdetailViewController = nil;

    if (indexPath.row==0)
    {

    DetailViewController *detailView=[[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];

    localdetailViewController=detailView;

    detailView=nil;

    }

    if (indexPath.row==1)
    {

    SecondViewController *secondDetailView=[[SecondViewController alloc] initWithNibName:@"SecondDetailViewController" bundle:nil];

    localdetailViewController=secondDetailView;
    secondDetailView = nil;
    }

    UINavigationController *navController=[[UINavigationController alloc] init];

    [navController pushViewController:localdetailViewController animated:YES];

    YourSplitViewAppDelegate *delegate=[[UIApplication sharedApplication] delegate];

    NSArray *viewControllers=[[NSArray alloc] initWithObjects:[delegate.splitViewController.viewControllers objectAtIndex:0],navController,nil];

    delegate.splitViewController.viewControllers = viewControllers;

    [localdetailViewController release];

    [navController release];

    }
splitviewcontroller有一个包含两个视图的数组,一个是根视图,另一个是局部视图,您可以更改此数组中的视图。如果您alloc和init一个视图,并将其替换为这两个视图中的任何一个,则此视图将替换splitviewcontroller中的当前视图

使用此代码为rootview的不同单元格加载不同的视图。将rootview的DidSelectRowatineXpath方法更改如下:

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    UIViewController  *localdetailViewController = nil;

    if (indexPath.row==0)
    {

    DetailViewController *detailView=[[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];

    localdetailViewController=detailView;

    detailView=nil;

    }

    if (indexPath.row==1)
    {

    SecondViewController *secondDetailView=[[SecondViewController alloc] initWithNibName:@"SecondDetailViewController" bundle:nil];

    localdetailViewController=secondDetailView;
    secondDetailView = nil;
    }

    UINavigationController *navController=[[UINavigationController alloc] init];

    [navController pushViewController:localdetailViewController animated:YES];

    YourSplitViewAppDelegate *delegate=[[UIApplication sharedApplication] delegate];

    NSArray *viewControllers=[[NSArray alloc] initWithObjects:[delegate.splitViewController.viewControllers objectAtIndex:0],navController,nil];

    delegate.splitViewController.viewControllers = viewControllers;

    [localdetailViewController release];

    [navController release];

    }

我的解决方案是使用Xcode 7.1.1作为通用应用程序,使用故事板、自动布局和大小类,构建iOS 9

我用了一个版本的。。。在当前/原始非替换/新建/第二个局部视图控制器的viewDidLoad方法中:

显然,首先为控制器导入正确的头文件:

#import "NEW_DetailViewController.h"
然后在viewDidLoad方法中:

注意:我可以在不加载XIB文件的情况下使用[[UIViewController alloc]init]而不是[[NEW_DetailViewController alloc]initWithNibName:@NEW_DetailViewController bundle:nil]使此代码正常工作,在代码中构建整个替换详细信息VC,但我对无法加载XIB文件感到沮丧,所以我坚持

我尝试了许多不同的SO答案,试图解决成功加载XIB文件作为分割视图控制器中的替换详细视图控制器的问题

最后,我给了我需要的提示

删除您迄今为止试图创建新XIB文件和UIViewController子类的所有工作

创建一个新文件并使其成为UIViewController的子类。请参见屏幕截图:

重要信息:确保选中复选框并创建XIB文件

您不需要修改UIViewController的新子类,除非您想对视图的内容进行编码。我只需要为我的解决方案添加UILabel,我使用Interface Builder完成了这项工作

确保按照上面的示例,在代码中引用替换视图控制器NEW_DetailViewController

就这样

在您的XIB文件中,您应该以以下内容结束:


我的解决方案是使用Xcode 7.1.1作为通用应用程序,使用故事板、自动布局和大小类,构建iOS 9

我用了一个版本的。。。在当前/原始非替换/新建/第二个局部视图控制器的viewDidLoad方法中:

显然,首先为控制器导入正确的头文件:

#import "NEW_DetailViewController.h"
然后在viewDidLoad方法中:

注意:我可以在不加载XIB文件的情况下使用[[UIViewController alloc]init]而不是[[NEW_DetailViewController alloc]initWithNibName:@NEW_DetailViewController bundle:nil]使此代码正常工作,在代码中构建整个替换详细信息VC,但我对无法加载XIB文件感到沮丧,所以我坚持

我尝试了许多不同的SO答案,试图解决成功加载XIB文件作为分割视图控制器中的替换详细视图控制器的问题

最后,我给了我需要的提示

删除您迄今为止试图创建新XIB文件和UIViewController子类的所有工作

创建一个新文件并使其成为UIViewController的子类。请参见屏幕截图:

重要信息:确保选中复选框并创建XIB文件

您不需要修改UIViewController的新子类,除非您想对视图的内容进行编码。我只需要为我的解决方案添加UILabel,我使用Interface Builder完成了这项工作

确保按照上面的示例,在代码中引用替换视图控制器NEW_DetailViewController

就这样

在您的XIB文件中,您应该以以下内容结束:


我不明白你的问题。嗯。。我有一个splitViewController,它附带了rootViewController和detailViewController。当一行被选中时,我想在detailViewController中加载一个不同的viewcontroller。我不明白你的问题。嗯。。我有一个splitViewController,它附带了rootViewController和detailViewController。当选择一行时,我想在detailViewController中加载一个不同的viewcontroller。感谢它正常工作,除了我从表视图中选择单元格后主视图控制器没有隐藏之外。知道出了什么问题吗?谢谢除了我的主视图,它工作正常 从表视图中选择单元格后,troller没有隐藏。知道出了什么问题吗?