【问题标题】:iOS app with lots of different Views具有许多不同视图的 iOS 应用程序
【发布时间】:2012-10-29 14:39:58
【问题描述】:

我正在开发一个 iOS 应用,我希望它有超过 10 个视图。在 Android 中,您必须先创建一个布局,然后再创建它的类。我一直在尝试在 XCode 中实现这一点,但我不知道该怎么做......

这个想法是有一个视图类,以便每个类管理自己的视图。到目前为止我所做的是:

1- 创建一个名为 Overview 的新 Objective-C 类和 UIViewController 子类,然后检查 Witch XIB 的用户界面。

2- 显示我使用的视图:[[NSBundle mainBundle] loadNibNamed:@"Overview" owner:self options:nil];

3- 在 vi​​ewDidLoad 我使用这个:self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"overview_portrait.jpg"]]; 来改变背景图片

我可以看到视图但背景没有改变,当我添加按钮并单击它们时会引发错误:-[ViewController push:]: unrecognized selector sent to instance 0x7427220

怎样才能达到我想要的?

提前谢谢你!

【问题讨论】:

    标签: ios ios5 view


    【解决方案1】:

    您正在显示视图但您没有加载它的控制器,这就是控制器的方法没有被调用的原因。您必须创建控制器类的实例并从当前控制器推送它。像这样的:

    Overview *overview = [[Overview alloc] initWithNibName:@"Overview" bundle:nil];
    [self pushViewController:overview animated:YES];
    

    【讨论】:

    • 谢谢!我必须把那段代码放在哪里?我开始从事 iOS 开发...
    • 此代码从当前控制器显示/推送一个新控制器,放置它的位置取决于您要解决的问题,您必须向我们提供有关它的更多详细信息才能回答这个问题,另外,您是在使用故事板还是在创建基于 nib 的应用程序?
    【解决方案2】:

    Pushing ViewControllers 用于导航控制器,因此如果您正在查看界面构建器,如果您的屏幕视图(我不确定您是否使用故事板或 XIB)如果您可以更改的视图附加到标有“导航控制器”的灰色框那么你可以使用:

            [self.navigationController pushViewController:myNewViewInstance animated:YES];
    

    最好使用背景图片:

    UIImageView *myBackground = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.width)];
                [self.view addSubview:myBackground];
                [self.view sendSubviewToBack:myBackground];
    

    如果您不使用导航控制器,您可以使用:

            [self presentModalViewController:<#(UIViewController *)#> animated:<#];(BOOL)#>];
    

    这将呈现新的视图控制器,然后返回使用:

    [self dismissModalViewControllerAnimated:<#(BOOL)#>]; 
    

    对于很多视图,我发现故事板是最好的,在创建新项目时勾选使用故事板框,然后您可以轻松查看所有视图并通过按钮推动创建模态转换以及不使用 CTRL+单击并从view1 上的一个按钮,然后在view2 上的任意位置取消拖动,然后单击模态,这将让您转换。

    【讨论】:

    • 谢谢!我必须把那段代码放在哪里?我开始从事 iOS 开发...
    • 好吧,如果您尝试导航不同的屏幕,presentModalViewController 将进入但或在特定事件结束时。对于dismissModalViewController,这将在您之前呈现的屏幕中的事件结束时进行。背景可以去任何地方viewDidLoad? -(BOOL)viewWillAppear 但我建议阅读这个小教程,它快速且轻松地进入故事板过渡raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1
    • 我一直在阅读该教程,并且我看到故事板更多地是将视图链接为“故事”,并且在我的应用程序中,我想从任何其他视图访问所有视图。示例:我有 5 个视图:1、2、3、4、5。在故事板中,我必须通过以下方式访问:1 -> 2 -> 3 -> 4 -> 5 如果我没记错的话我想要的是:1 -> 3 -> 2 -> 5 -> 2 -> 4 -> 3... 我能做到吗?
    【解决方案3】:

    我不确定 Android 的设置,但对于 iOS,您想要实例化视图控制器,而不是 nib 文件。您要做的是创建一个新的概览类并使用 nib 对其进行初始化。

    Overview *overviewController = [[Overview alloc] initWithNibName:@"Overview" bundle:nil];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多