如何防止UiView在TableView下面滑落?

时间:2009-09-08 06:48:11

标签: iphone xcode uiview interface-builder tableview

我有一个初学iPhone项目。我有一个TableView,它只是一个包含大量条目的列表框,底部是一个小的UiView。见图。

问题是UiView基本上成为列表框的一部分,只有当我向下滚动到TableView中的最后一项时才会出现。

我希望UiView固定在底部,永不动。我看了整个界面生成器并找不到任何东西(虽然在它的防御中我是iPhone开发的总菜鸟)。我如何完成这样的技巧?

alt text http://www.sqleffects.com/mystuff/ibissue.jpg

4 个答案:

答案 0 :(得分:3)

好的,你需要的是一个包含

的UIView
  1. 一个UIView,它充当TableViewController,因此必须实现UITableViewDelegate和UITableViewDataSource协议(但它不能直接从UITableViewController派生,因为通过这样做,UITableView将自动占用整个屏幕大小(工具栏除外) navbars和/或tabbars))
  2. 另一个UIView,你想放在底部的那个
  3. 通过这样做,您可以在IB中创建一个UITableView(不是UITableViewController!)并将其与UIView中的UITableView属性(1中提到的那个)连接。

    使用这种方法可以给UITableView一个固定的大小(你需要它,为你的第二个UIView底部留出空间)

答案 1 :(得分:2)

为了构建gabtub的答案,包含表视图和底部视图的UIView不需要实现UITableViewDelegate和UITableViewDataSource方法。

因为听起来你正在使用视图控制器构建,所以我将主视图控制器作为UIViewController的子类(而不是使用UITableViewController)。然后,您可以将UITableView和UIView添加到UIViewController的视图实例中。

然后我会让你的UIViewController子类实现UITableViewDelegate和UITableViewDataSource协议 - 你最终会得到与你的旧UITableViewController子类类似(代码方面)的东西,但是它的view属性将是底层的UIView而不是UITableView实例(如果你在调试器中找到它,你可以看到[UITableViewController视图]和[UITableViewController tableView]返回相同的对象)

与gabtub的建议相比,其中一个优点是它可以避免创建一个一次性的UIView子类,因为你可能已经有了一个一次性的UIViewController子类(或者,以前有一个一次性的UITableViewController子类)。 / p>

答案 2 :(得分:1)

问题可能是,现在,UIView是一个页脚视图,因此包含在表视图中。

如果从TableView中删除UIView,请缩放TableView以为UIView创建空间,并将UIView放在您想要的位置,它可能会被添加到TableView的superview中。然后,您可以将TableView的大小调整为正确的大小。

答案 3 :(得分:0)

底线是:如果您基于导航模板创建项目,则无法调整UiTableView周期的大小。

为了做我想做的事,我基本上必须从头开始并选择一个基于视图或窗口的模板并手动删除UiTableView。