iPhone 应用程序 - 添加另一个视图
Posted
技术标签:
【中文标题】iPhone 应用程序 - 添加另一个视图【英文标题】:iPhone app - adding another view 【发布时间】:2009-06-09 12:25:03 【问题描述】:我正在开发一个 iPhone 应用程序,但发现我需要另一个视图/窗口来让用户在那里输入和保存数据/信息。
如何添加另一个视图?我是否将其添加到界面生成器中,然后将其链接到主应用程序委托中,或者它是否有自己的 .h 和 .m 文件。
我选择了一个窗口视图应用程序开始,我是否需要从一个翻转视图应用程序重新开始,或者如果我在那里有正确的代码,是否可以添加它。
非常感谢
卡尔
【问题讨论】:
【参考方案1】: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 文件,也可以通过编程方式。
就创建视图文件而言,您应该在 Interface builder 中为所有内容的布局创建一个 nib,然后为 ViewController
代码本身创建一个 .h
和 .m
文件。
【讨论】:
谢谢你的帮助,我会试试这个【参考方案2】:您还可以显示新框架而不是新视图。有时更容易,因为您不必传递参数 - 您属于一类:
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 帮助中下载一些应用程序并检查它们是如何做到的。很好的示例是在“元素”和“UICatalog”应用程序中,您可以在其中翻转视图和其他示例。
// 创建并推送另一个视图控制器。 UIViewController *myViewController = [[UIViewController alloc] init]; myViewController.title = @"我的第一个视图"; myViewController.view.backgroundColor = [UIColor redColor];
//推送UIView。 [self.navigationController pushViewController:myViewController 动画:YES];
【讨论】:
以上是关于iPhone 应用程序 - 添加另一个视图的主要内容,如果未能解决你的问题,请参考以下文章
从另一个 XIB (iPhone) 的视图控制器加载 XIB