0

刚开始为 Xcode 和 iphone dev 提供了一个不错的小教程。我创建了一个简单的单视图项目。我在 ViewDidLoad (ViewController.m)which*the button) 中添加了自定义按钮的代码,它指向 showAboutPage 函数

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

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

我应该在里面实现什么代码

- (void) showAboutPage
{

}

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

4

3 回答 3

1

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

- (void) showAboutPage
{
    RedView *redView = [[[NSBundle mainBundle] loadNibNamed:@"RedView" owner:self options:nil]] objectAtIndex:0];
    [self.view addSubview:redView];
}
于 2012-11-03T15:42:30.777 回答
0

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

- (void)showAboutPage
{
    AboutPageViewController *about = [[AboutPageViewController alloc] init];
    [self presentViewController:about animated:YES];
    // If you're not using ARC:
    [about release];
}
于 2012-11-03T14:31:16.740 回答
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,都在这个方法中传递。

于 2012-11-03T15:44:19.940 回答