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

时间:2011-08-04 18:51:18

标签: ios view viewcontroller

我有一个拆分视图应用程序,在详细信息视图中有一个按钮,当单击该按钮时,将使用户进入所选图像的全屏视图。

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

我知道这真的很模糊,但任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:6)

只要您移动到单个视图(就像在另一个拆分视图中一样),您应该只需要一个视图控制器。如果我理解你在做什么,那么进展应该是:

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

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

  4. 在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];
    }
    
  5. 然后在viewDidLoad函数内的DetailViewController.m文件中添加以下内容:

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

  7. 这是一般的想法。我希望有所帮助!

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

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