【问题标题】:iPhone app - adding another viewiPhone 应用程序 - 添加另一个视图
【发布时间】:2009-06-09 12:25:03
【问题描述】:

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

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

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

非常感谢

卡尔

【问题讨论】:

    标签: ios objective-c iphone cocoa-touch


    【解决方案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];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      • 2011-06-15
      • 1970-01-01
      相关资源
      最近更新 更多