iPhone应用程序 - 添加另一个视图

时间:2009-06-09 12:25:03

标签: ios objective-c iphone cocoa-touch

我正在开发iPhone应用程序,但发现我需要另一个视图/窗口让用户输入并保存数据/信息。

如何添加其他视图?我是否在界面构建器中添加它,然后将其链接到主应用程序委托中,或者它是否有自己的.h和.m文件。

我选择了一个窗口视图应用程序,我是否需要从翻转侧视图应用程序重新开始,或者如果我在那里有正确的代码,就可以添加它。

曼尼谢谢

卡尔

2 个答案:

答案 0 :(得分:5)

Window应用程序非常适合您。在AppDelegate文件中,您应该有这样的部分:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    //instantiate the venue view controller object
    YourViewController *yourViewController = [[YourViewController alloc] initWithNibName:@"YourView" bundle:[NSBundle mainBundle]];

    // Configure and show the window
    [window addSubview:[yourViewController view]];
    [window makeKeyAndVisible];

}

这是代码的一部分,用于声明,分配和添加自定义视图到窗口。您可以选择添加第二个视图。您可以将其添加到此位置,也可以使用导航控制器将其添加到此位置之后。要添加导航控制器,请将上述方法更改为:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

//instantiate the venue view controller object
YourViewController *yourViewController = [[YourViewController alloc] initWithNibName:@"YourView" bundle:[NSBundle mainBundle]];
    UINavigationController *yourViewControllerWrapper = [[UINavigationController alloc] initWithRootViewController: yourViewController];



// Configure and show the window
[window addSubview:[yourViewControllerWrapper view]];
[window makeKeyAndVisible];

}

在那里,我们创建您的自定义视图,然后将其包装在导航控制器中。导航控制器是添加到窗口的内容。接下来,切换到第二个视图的代码如下所示,假设您按下按钮切换视图:

-(IBAction)switchViewController{
    MySecondViewController *secondViewController = [[MySecondViewController alloc] init];

    [self.navigationController pushViewController:secondViewController];
}

当然,您应该替换

MySecondViewController *secondViewController = [[MySecondViewController alloc] init];

使用正确的方式实例化第二个视图控制器。这可以来自上面的nib文件,也可以是编程方式。

就创建视图文件而言,您应该在“界面”构建器中为所有内容的布局创建一个nib,然后为.h代码本身创建一个.mViewController文件。

答案 1 :(得分:1)

您还可以显示新框架而不是新视图。有时更容易,因为你没有;必须传递参数 - 你在一个类:

CGRect frame = okresView.frame;
frame.origin.x = frame.size.width;
if ( [okresView superview] == nil )
{
[self.view addSubview:okresView];
}

okresView.frame = frame;
[okresDataTableView reloadData]; // przeładowanie tabeli na subwidoku

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.5];
frame.origin.x = 0;
okresView.frame = frame;
[UIView commitAnimations];

如果你想要新的子视图,你可以使用几种方法 - 只需从XCode帮助中下载一些应用程序并检查它们是如何做到这一点的。很好的例子是'Elements'和'UICatalog'应用程序,你可以在其中翻转视图和其他示例。

//创建并推送另一个视图控制器。 UIViewController * myViewController = [[UIViewController alloc] init]; myViewController.title = @“我的第一视图”; myViewController.view.backgroundColor = [UIColor redColor];

//推动UIView。 [self.navigationController pushViewController:myViewController animated:YES];