我们可以在单视图应用程序中使用基于表格的导航

时间:2013-08-25 09:45:58

标签: ios

我创建了具有一些基本功能的单视图iOS应用程序。现在我想在简单的视图控制器中添加表格视图我想使用带有行导航的表格视图(pushcontroller和popcontroller),如果可能的话,我们如何设置它。

1 个答案:

答案 0 :(得分:2)

如果您需要完全支持推/弹操作,我会使用导航控制器。

另一方面,您可以在点击表格行时简单地显示详细视图控制器:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

  MyViewController* detailController = <CREATE THE VIEW CONTROLLER>;
  [self presentViewController:detailController animated:YES completion:NULL];
}

在这种情况下,您的detailController需要实现一种导航栏或其他机制,让用户解除控制器(通过dismissViewControllerAnimated:completion:)并返回表格视图。 (使用导航控制器将以规范的方式处理此问题。)

基于呈现/解除的简单解决方案的一个主要缺点是,以这种方式呈现的所有视图控制器都会立即被解除,因此您无法进行多级导航。

编辑:

要向您的应用添加导航控制器,只需执行以下操作:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  MyViewController *myViewController = [[MyViewController alloc] initWithNibName:nil bundle:nil];

  ...

  self.navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];

  self.window.rootViewController = self.navigationController;

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

  ...

  [self.window makeKeyAndVisible];
  return YES;
}

目前,您的didFinishLaunchingWithOptions方法应使用addSubview方法使主视图控制器(在我的示例中名为MyViewController)可见。您可以通过上面的代码替换该调用以实例化导航控制器并将其推送到主视图控制器。

或者,您可以使用基于导航的模板创建一个新的Xcode项目,并移动所有源文件。