子类UIViewController以编程方式创建列表而不使用nib

时间:2011-09-03 11:08:32

标签: iphone ios

我目前需要的是通过子类化UIViewController并在不使用任何nib文件的情况下应用必要的方法以编程方式创建tableview。它可能需要一个UINavigationViewControlloer。我基本上了解所有这些概念,甚至几乎知道如何将所有内容拼凑在一起,但缺少某些东西。它将有4个文件。 AppDelegate h / m和SomeNameViewcontroller h / m。我认为SomeNameViewController应该有一个属性UITableView *

我尝试了几种方式并在线查看,但我一直在使用带有导航栏的黑屏。这令人难以置信的令人沮丧,当我可以让tableView显示时,我无法让tableView重新加载数据:/

2 个答案:

答案 0 :(得分:3)

从你的叙述中,你似乎并没有完全掌握所涉及的概念。例如,没有UINavigationViewController这样的东西。以下是您需要了解的内容:

  • UINavigationController是视图控制器的控制器。

您可以使用

在应用代理中创建它
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:
   yourRootViewController];

并使用self.navigationController从视图控制器访问它。

  • 为了您的目的,您创建了UITableViewController的子类。 Xcode中的模板应该已经包含了您需要的所有datasourcedelegate方法的存根。

  • 在您的app delegate中,确保已将正确的导航控制器指定为根。

application:didFinishLaunchingWithOptions:

self.window.rootViewController = nav; // the nav controller you created
[nav release];
[self.window makeKeyAndVisible];
return YES;

答案 1 :(得分:1)

听起来你只需要一个UITableVIewController。就像Mundi提到的那样,xcode很好地处理了这个问题。这是你要做的:

  1. 在XCode中创建一个新项目,然后选择Window-based Application模板。

    • 这给你基本的东西,主要是AppDelegate
  2. 添加一个UIViewController subclass的新文件。给定选项时,将子类更改为UITableViewController。

    • 之后,您将可以选择使用nib文件,取消选中该项。
    • 这将为您提供一个UITableViewController,其UITableView已连接到该控制器(DelegateDataSource)。

  3. NavigationController中创建AppDelegate并推送TableViewContoller

    • [self.navigationController pushViewController:yourTableViewController animated:NO];
  4. 设置NavigationContoller,就像Mundi描述的RootController一样。

  5. 斯坦福大学Developing Apps for iOS的第6和第7节非常清楚地解释了NavigationControllers和其他控制者(例如TabBarController)。