【问题标题】:Switching from the Main View to a different View从主视图切换到其他视图
【发布时间】:2012-05-11 18:38:56
【问题描述】:

我正在尝试使用按钮从一个视图 (XIB) 转到另一个视图。我正在使用 Xcode 4.3.2 和 iOS 5。我从创建项目(单视图应用程序)开始。然后我在 Interface Builder 中创建我的按钮,在头文件中创建我的插座,在 .m 文件中创建我的 IBAction。接下来,我在 Xcode 中右键单击我的项目文件夹并选择“新建文件”。然后我选择了“Object-C Class”并将其命名为“SecondViewController”。创建了两个新文件,“SecondViewController.h”和“SecondViewController.m”。然后我返回并在 Xcode 中右键单击我的项目文件夹,选择“新建文件”并从“用户界面”选项中选择“查看”。

现在我有了一个空的 IBAction(我的按钮),我想用它来转到一个名为 SecondViewController.xib 的新视图。

如果到目前为止新的 XIB 和 .h/.m 文件的创建是正确的,那么我将如何使用按钮“到达”或显示我的第二个视图来执行此操作?请记住,我仍处于初学者水平,感谢您的帮助和耐心:)

主视图和第二视图之间的唯一区别在于头文件:

主视图头文件:

@interface ButtonToNewViewViewController : UIViewController

二次查看头文件:

@interface SecondViewController : NSObject

IBAction:

-(IBAction)nextView:(id)sender
{
    // go to new view
}

【问题讨论】:

    标签: ios cocoa-touch view uikit viewcontroller


    【解决方案1】:

    这是一个相当简单的任务,许多在线教程都涵盖了这个任务,但无论如何我都会给你一些帮助。 :-)

    首先,当您创建SecondViewController 时,请记住将其创建为UIViewController 的子类,而不是NSObject。因此,除非您对这些文件进行了大量工作,否则您可以继续重新创建它们。同时,您可以通过在创建过程中选中复选框来确保 Xcode 自动为您创建 xib 文件。

    创建SecondViewController(.h、.m 和 .xib)后,打开ButtonToNewViewController.m 并将#import "SecondViewController.h" 放在文件顶部。在您的方法nextView: 中,您可以使用这两行代码更改为第二个视图控制器:

    SecondViewController *second = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    [self presentViewController:second animated:YES completion:nil];
    

    这应该会弹出第二个视图控制器,并带有一些简单的动画。确保您传递给 initWithNibName: 的字符串与您的 .xib 文件同名。

    如果你想回到ButtonToNewViewController,你可以在SecondViewController的一个方法中使用这个:

    [self dismissViewControllerAnimated:YES completion:nil];
    

    这应该让事情变得更清楚了。 :-)

    【讨论】:

    • 感谢您的帮助。正如我所说,我对 iOS 开发非常陌生,我知道在网上搜索“how to”时很容易迷路。这是完美的。感谢您抽出时间来指导我完成此过程:)
    【解决方案2】:

    对于任何返回此问题的人,从 iOS 6 开始,以下语法现已弃用

    [self presentModalViewController: ]
    

    替换很相似

    [self presentViewController:viewController animated:YES completion:nil];
    

    【讨论】:

      【解决方案3】:

      您可以使用以下命令从一个 xib 更改为另一个。

      - (IBAction)showInfo1:(id)sender
      {    
          mySecondViewController *controller = [[mySecondViewController alloc] initWithNibName:@"nameOfMyXib" bundle:nil];
          [self setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
          [self presentModalViewController:controller animated:YES];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多