从自定义按钮更改为另一个视图

时间:2012-11-03 14:18:41

标签: objective-c ios cocoa-touch

刚开始为Xcode和iphone开发了一个很好的小教程。我创建了一个简单的单视图项目。我在ViewDidLoad(ViewController.m)中添加了自定义按钮的代码,其中*按钮)指向showAboutPage函数

[aboutBtn addTarget:self action:@selector(showAboutPage) forControlEvents:(UIControlEventTouchUpInside)];

我的按钮显示正确,并具有突出显示,颜色,字体所需的所有代码。

我应该在

中实现什么代码
- (void) showAboutPage
{

}

为了推入第二个视图(redView.xib)。 玩故事板很容易,我可以通过“连接线”/拖放来实现它,但编程是我想要的,所以我可以学习正确的方法。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

您的视图的第一个字母应为大写,redView => RedView。另一个建议是,我认为使用IBAction比向按钮添加目标更好。添加RedView.h,RedView.m和RedView.xib后,应将RedView.xib的类设置为Interface Builder中的RedView。然后你可以像这样使用它:

- (void) showAboutPage
{
    RedView *redView = [[[NSBundle mainBundle] loadNibNamed:@"RedView" owner:self options:nil]] objectAtIndex:0];
    [self.view addSubview:redView];
}

答案 1 :(得分:0)

假设您在视图控制器类中执行了所有这些操作(这是我从您的描述中推断出来的):

- (void)showAboutPage
{
    AboutPageViewController *about = [[AboutPageViewController alloc] init];
    [self presentViewController:about animated:YES];
    // If you're not using ARC:
    [about release];
}

答案 2 :(得分:0)

尽管@ H2CO3提供了非常正确的答案,但我想补充一点,如果你喜欢使用Interface Builder,你也可以用更少的代码和更多的结构来做到这一点。在IB中从ViewController1到ViewController 2创建一个segue,将它的标识符设置为唯一的,让我们说ToViewController2。然后您的方法可能如下所示:

- (void) showAboutPage {
    [self performSegueWithIdentifier:@"ToViewController2" sender:self];
}

假设你想传递一些变量,你可以这样做:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"ToViewController2"]) {
        [segue destinationViewController setYourVariable:variable];
        // Pass your variables on to the next view here.
    }
}

关于这一点的好处是,应该传递给下一个ViewControllers的所有东西,假设你有来自ViewController的几个segue,正在这个方法中传递。