【问题标题】:pushing to a detail view from a table view without storyboard or nib?从没有故事板或笔尖的表格视图推送到详细视图?
【发布时间】:2013-03-08 18:40:39
【问题描述】:

我正在构建我的第一个应用程序,但不使用故事板或 nib。我想从表格视图推送到详细视图,并且似乎找不到任何资源来显示如何在没有界面生成器的情况下执行此操作。我的表格视图控制器有一个图片、标题和副标题,我希望这些都被传递给细节视图,但我希望细节视图也有一个文本描述。到目前为止,我只能构建我的表格视图控制器。没有笔尖我不知道怎么做剩下的。如何推送到详细视图?如何格式化详细视图?有没有人有我可以看的任何资源或示例代码?

【问题讨论】:

  • 为什么不想使用 nib 文件?
  • 您不使用情节提要或笔尖是否有特殊原因?它们的存在是有充分理由的:它们让生活变得更轻松。
  • 并不是我不想使用 nib 文件。这是我正在从事的一个项目,我不应该使用它们。
  • 你使用哪个按钮传递到详细视图
  • 过去,我发现 nib 存在一些挑战:1) 理解差异,2) 将它们与代码挂钩,3) 理解它们的魔力。我发现使用代码可以解决这些问题并提供更多功能,同时保持应用程序更小(因此下载时间更快)。

标签: xcode uitableview nib detailview


【解决方案1】:

创建 UIViewController 的自定义子类,例如 DetailViewController。要格式化它,请在 -[DetailViewController viewDidLoad] 中编写代码。

因此,在 DetailViewController.m 中,您可以编写:

- (void)viewDidLoad {
    [super viewDidLoad];

    // Add a label with some text.
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 40)];
    label.text = @"Some text";
    [self.view addSubview:label];
}

注意:在代码中分隔上述子视图可能具有挑战性。 Interface Builder 对此有所帮助。一种想法是使用 Interface Builder 将所有内容分开,然后从 Interface Builder 获取坐标。你也可以使用 nib2objc。

然后,在表视图控制器的实现 (.m) 文件的 -tableView:didSelectRowAtIndexPath: 中,您可以编写:

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:detailViewController animated:YES];

【讨论】:

    【解决方案2】:

    如果未实现 navigationController,self.navigationController 将不起作用。我发现新方法 presentViewController 有效。

    DetailViewController *detailVC = [[DetailViewController alloc]initWithNibName:nil bundle:nil];
    detailVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:detailVC animated:YES completion:nil];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      相关资源
      最近更新 更多