1

我正在尝试使用按钮从一个视图 (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 文件的创建是正确的,那么我将如何使用我的按钮“到达”或显示我的第二个视图来执行此操作?请记住,我仍处于初学者水平,感谢您的帮助和耐心:)

我可以告诉我的主视图和我的 SecondView 之间的唯一区别是在头文件中:

主视图头文件:

@interface ButtonToNewViewViewController : UIViewController

第二种查看头文件:

@interface SecondViewController : NSObject

IBA动作:

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

3 回答 3

10

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

首先,当你创建 时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];

这应该让事情弄清楚一点。:-)

于 2012-05-11T19:08:42.363 回答
1

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

[self presentModalViewController: ]

替换非常相似

[self presentViewController:viewController animated:YES completion:nil];
于 2015-11-09T10:25:20.913 回答
0

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

- (IBAction)showInfo1:(id)sender
{    
    mySecondViewController *controller = [[mySecondViewController alloc] initWithNibName:@"nameOfMyXib" bundle:nil];
    [self setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
    [self presentModalViewController:controller animated:YES];
}
于 2012-05-11T19:06:59.350 回答