iOS-添加新视图/按按钮切换视图

iOS-添加新视图/按按钮切换视图,ios,view,viewcontroller,Ios,View,Viewcontroller,我有一个拆分视图应用程序,在细节视图中有一个按钮,单击该按钮后,用户将看到所选图像的全屏视图 我知道我需要一个新的nib文件和视图控制器,但我不确定如何将这些新文件与我现有的RootViewController和DetailViewController文件连接起来 我知道这一点很模糊,但如果您能提供任何帮助,我们将不胜感激。只要您移动到一个视图(而不是另一个拆分视图),您应该只需要再使用一个视图控制器。如果我理解你在做什么,那么进展应该是以下几点: 使用关联的.xib文件创建新的视图控制器 在D

我有一个拆分视图应用程序,在细节视图中有一个按钮,单击该按钮后,用户将看到所选图像的全屏视图

我知道我需要一个新的nib文件和视图控制器,但我不确定如何将这些新文件与我现有的RootViewController和DetailViewController文件连接起来


我知道这一点很模糊,但如果您能提供任何帮助,我们将不胜感激。

只要您移动到一个视图(而不是另一个拆分视图),您应该只需要再使用一个视图控制器。如果我理解你在做什么,那么进展应该是以下几点:

  • 使用关联的.xib文件创建新的视图控制器
  • 在DetailViewController.h中声明新视图控制器的特定实例,在本例中称为newViewController,并在DetailViewController.m中合成它

    @interface DetailedViewController
    {    
        NewViewController *newViewController;
    }
    @property (nonatomic, retain) NewViewController *newViewController;
    @end
    
  • 将iAction添加到DetailViewController的头文件中,这将是负责实际触发视图切换的函数

  • 在DetailViewController.m文件中实现视图切换操作,应如下所示:

    (IBAction)switchToNewView:(id)sender
    {
        if (newViewController == nil)
        {
            NewViewController *newViewController =
              [[NewViewController alloc] 
                initWithNibName:@"NewViewController"
                bundle:[NSBundle mainBundle]];
    
            self.newViewController = newViewController;
        }
    
        // How you reference your navigation controller will
        // probably be a little different
        [self.navigationController
           pushViewController:self.newViewController
           animated:YES];
    }
    
  • 然后在viewDidLoad函数内的DetailViewController.m文件中添加以下内容:

    UIBarButtonItem *addButton =
      [[UIBarButtonItem alloc]
        initWithBarButtonSystemItem: UIBarButtonSystemItemAdd
        target:self action:@selector(switchToNewView:)];
    self.navigationItem.rightBarButtonItem = addButton;
    [addButton release];
    
  • 如果您选择通过UIButton实现此功能,另一个选项是在NewViewController.xib上的Interface Builder中创建按钮,然后选择它,在Connections inspector中,在“touchUpInside”事件和文件所有者之间创建链接,然后选择switchToNewView iAction。这应该完成同样的事情

  • 这是总的想法。我希望这有帮助

    编辑:如评论中所述,如果添加一个按钮作为UIBarButton作为导航控制器的一部分,您只需执行以下操作:

    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(switchToNewView:)];
    self.navigationItem.rightBarButtonItem = addButton;
    [addButton release];
    

    听起来你不熟悉的不仅仅是nib文件,还有视图控制器。看看这本书,这真的很有帮助。非常感谢你!有几个问题尽管我的DetailViewController.m文件中不断出现错误,newViewController是对非结构中的成员“newViewController”的未声明请求,或者对非结构或联合中的成员“newRouteViewController”的联合请求,但我不确定第4步是什么。是要设置按钮吗?我已经设置了一个按钮,因此如何合并行UIBarButtonSystemItemAddTarget:self action:@selector(switchToNewView:)];我想命名有点混乱,newViewController就是我刚刚添加并计划切换到的自定义视图控制器。您可以将其命名为刚刚添加的新视图控制器的任何名称。如果您确实将其命名为NewViewController,尽管这并不理想,因为它的描述性不强,那么请确保已将头文件包含在DetailViewController中。第4步是如何实用地添加导航按钮并将iAction分配给它。如果您通过UIButton执行此操作,请让我知道,我将告诉您如何执行此操作。好的,如果我将其命名为FullViewController,是否会更改newRoutViewController的名称?在DetailViewController的switchToNewView函数中使用fullViewController之前,我应该在某个地方声明它吗?是的,我用的是UIButton。是的。XCode将类的名称默认为文件名的名称,因此在本例中,您可以将fullViewController声明为fullViewController类型的viewController实例。是的,我编辑了我以前的文章,因为我没有指定,请参见步骤2。对于UIButton,请参见步骤6。如果您需要更多的澄清,请告诉我,如果您成功实施了,请务必标记答案!是否需要在局部视图控制器的头文件中导入新视图控制器的头文件?此外,我还不断收到对成员“newRouteViewController”的以下错误
    请求,这不是我无法摆脱的结构或联合。除此之外,它似乎工作得很好。