适用于iPhone的类似Web的标签

时间:2009-12-16 14:23:59

标签: iphone uiview uiviewcontroller xamarin.ios

在iPhone上实现看起来像Web应用程序的标签的最佳方法是什么,如下面的屏幕截图(请注意“Checkin-Info-Friends”标签)?这些不是UIKit标准库的一部分,但最近似乎很常见。

我花了很多时间为iPhone开发应用程序,但没有像这样开发控件。这里最好的方法是什么:

  • 为每个标签内容创建一个新的UIView,并立即将三个子视图添加到主视图中?
  • 仅在用户点击每个标签时创建新的UIView?
  • 将所有内容放在UIScrollView中,只需在用户点击每个标签页时更改页面?

也许这里有开源控件?我找不到任何东西。

alt text
(来源:foursquaregame.com

4 个答案:

答案 0 :(得分:3)

我遇到类似问题的方法是制作所有4个(在我的情况下)选项卡视图,但通过释放除当前选项卡视图之外的所有选项卡来响应didReceiveMemoryWarning。 (然后,当然,当用户选择新选项卡时,您必须确保创建新视图,如果它不存在。)

我认为这是一个很好的妥协 - 一开始对用户的快速反应(在我的情况下,我的应用程序中的内存占用率最低),然后是对低内存的响应以避免被击中。

答案 1 :(得分:1)

我认为最好只对父视图或视图控制器中的子视图进行三次UIView *引用,最初都为null,然后让子例程隐藏其他两个视图(如果它们是可见的)并构造和显示或只是显示新视图。假设没有非凡的内存要求。

我认为在如此小的屏幕区域中,子视图级别的加载/卸载问题不太可能是一个问题,但如果父视图需要加载/卸载,子视图应该全部(隐藏和卸载) ,并且在重新加载时,loadView应该在启动时调用最后一段中描述的例程。

如果三个子视图中的任何一个实际上有大量的内存或资源使用,那么我的建议是相反的,并且每个子视图和/或它们后面的任何内存密集型对象不仅应该隐藏而且应该被卸载只要有可能。我认为,在那里使用Google地图时,隐藏时需要卸载可能适用于此。

这是正确的观点吗?我缺少一些额外的细节吗?

答案 2 :(得分:1)

您可以让每个标签成为带有笔尖和所有内容的真实视图控制器。唯一的问题是你必须转发你想要接收的标准视图控制器调用(viewWillAppear等),但它使编码更加清晰,因为你的代码就像对任何其他视图一样(尽管对于较小的空间)。

您调用每个控制器的“view”属性以获取视图,您将其添加为视图下方的容器视图的子视图。

答案 3 :(得分:1)

如果这三个都是表格视图,您可能会使用单个UITableViewController来根据所选标签更改内容。否则,我第二次使用真实视图控制器备份每个子视图的KHG评论。

对于标签本身,请考虑子类化UISegmentedControl