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 应用程序 - 添加另一个视图的主要内容,如果未能解决你的问题,请参考以下文章

相机视图在 iPhone 上不起作用,在另一个上起作用

从另一个 XIB (iPhone) 的视图控制器加载 XIB

导航到另一个视图 iPhone sdk?

将收藏夹功能添加到 iPhone App iphone sdk

对 iPhone 中的图像进行操作

iPhone - 如何将导航控制器添加到视图?