【问题标题】:iPhone creating nested viewsiPhone 创建嵌套视图
【发布时间】:2011-08-10 21:25:00
【问题描述】:

我是 iPhone 编程的菜鸟。

我想创建带有多个嵌套视图的基于导航的应用程序,第一个和第二个是 UITableView 类型,第三个是带有我自己的界面的简单 UIView,我在 Interface builder 中构建。

当我运行应用程序时,触摸第一个表视图上的行我转移到第二个,当我触摸第二个上的行时,我转移到第三个,但在第三个视图上我看不到我在 Interface Builder 中构建的界面只是空白屏幕。

这是我的代码的一部分,我尝试调用我的第三个视图:

    if(self.reportView == nil){    
        ReportTypeViewController *viewController = 
        [[ReportTypeViewController alloc] initWithNibName:@"ReportTypeViewController" 
                                            bundle:[NSBundle mainBundle]];
        self.reportView = viewController;
        [viewController release];        
    }


    [self.navigationController pushViewController:self.reportView  animated:YES];
    self.reportView.title = @"Reports"; 

没关系,伙计们。 我只是没有在我的按钮上添加文本,这在我看来,这就是为什么它是空白的。

【问题讨论】:

  • ReportTypeViewController 是您的第二个 UITableViewController(调用它的那个)的子类吗?
  • 继承自 UIViewController。
  • 我通过选择 UIViewController 子类创建了 ReportTypeViewController。如何确保 ReportTypeViewController 是我的第二个 UITableViewController 的子类?
  • 在阅读了更多您的 cmets 之后,我认为这不是您的问题,但您可以尝试一下。要使 ReportTypeViewController 成为您的第二个 UITableViewController 的子类,请打开 ReportType 视图控制器的头文件 (.h) 并再次将“ReportTypeViewController:UIViewController”替换为“ReportTypeViewController:NameOfSecondTableViewController”,我很确定这不是您的问题...据我所知 UIViewController 应该可以工作。
  • 当我更改继承自的类时显示错误。

标签: iphone views controllers


【解决方案1】:

你不需要[NSBundle mainBundle];

应该是这样的:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    ReportViewController *vc = [[ReportViewController alloc] initWithNibName:ReportViewController bundle:nil];
    vc.title = @"Reports";
    [self.navigationController pushViewController:vc animated:YES];
    [vc release];
}

如果您只是通过选择按需创建视图,则要容易得多。

【讨论】:

  • 我完全按照你写的做了,但问题仍然存在。
【解决方案2】:

在 IB 中,确保您记得将文件所有者的类别设置为 ReportTypeViewController,并确保文件所有者的 view 出口连接到您的视图。

【讨论】:

  • 我在 IB 中查看了您的建议,没关系。但该应用仍然无法按预期运行。
【解决方案3】:

ReportTypeViewController 真的继承自 UIViewController,还是像您所说的在 IB 中构建的 UIView

navigationController pushViewContoller:animated: 需要 UIViewController 而不是 UIView。在 IB 中,您可以添加 UIViewController 并将您的 UIView 移动到上面,或者以编程方式创建它。

【讨论】:

  • 是的,它继承自 UIViewController。
猜你喜欢
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多