2010-09-24 70 views
1

我正在开发一个iPhone应用程序。我正在使用UITable子类UITableViewController。我在视图中添加了一个NavigationBar:UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 320.0f, 48.0f)];[self.tableView addSubview:navBar];,现在的问题是导航栏向下滚动,并且这是我想要避免的。有可能使用UITableViewController来避免它?NavigationBar不必滚动UITable

+0

你可以提供一些更多的细节..什么是xib的结构?或者什么是superview文件的viewcontroller类型? – kthorat 2010-09-24 15:55:09

+0

我没有做任何与xib文件,它只是一个子类的UITableViewController,并在viewDidLoad我添加一个导航栏,但它滚动表 – PiccoloBuddha 2010-09-24 16:04:29

回答

3

你说

我使用的是UITable子类的UITableViewController

我猜你使用的是子类的UITableViewController其中,自然也拥有一个UITableView。 您的问题是由于您将NavigationBar插入到UITableView中,或者更确切地说,插入到属于TableView的UIScrollView中。 根据您的需求,您有两种选择:

  1. 如果您希望您的应用的行为像例如Mail(所以你的TableView将只是一个视图结构中的一个元素,通过它你可以挖掘),你应该使用UINavigationcontroller并且让你的TableViewController成为NavigationController的第一个视图,就像在Xcode中打开“基于导航”的模板一样。 UINavigationcontroller将已经包含一个UINavigationBar,所以你不必担心。
  2. 如果由于某种原因,这不是你想要的,你将不得不创建一个UIView来保存你的UINavigationBar和UITableView。由于使用UITableViewController完成这样的设置已知很困难,因此您可能需要抛弃TableViewController并将其替换为一个简单的ViewController,该ViewController实现了“UITableViewDelegate” - 和“UITableViewDataSource”--Delegate。有关更多帮助,请参阅this post
+0

谢谢,我选择第二个选项,我读你发布的链接,但现在我有一个新的问题,因为我总是用UITableViewController使用UItable:我在xib文件上添加了一个UITable,我在.h文件上用IBOutlet连接了它,我在.h文件中添加了UIViewController ,最后实现了所有与UITableView控制器一样,管理表的方法(numberOfRowsInSection:或 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath),但数据不加载! – PiccoloBuddha 2010-09-25 08:36:02

+0

刚刚解决!我只应将代表和数据源链接到文件的所有者!谢谢你的帮助!! – PiccoloBuddha 2010-09-25 08:55:19

+0

不客气。请将我的答案标记为已接受。 – Phlibbo 2010-09-25 09:35:26