在iphone中构建动态UI

时间:2010-11-12 03:18:04

标签: iphone objective-c

创建UI有多难,哪些视图基于用户拥有的数据? 所以说我可以有一个滚动视图,一个特定的用户A可以有一个由X,Y,Z组成的视图,而用户B可以有一个包含Y或Z的视图?我只关心在视图中定位视图,因为我们现在不能通过接口构建器来实现它,并且需要对它进行编码。

4 个答案:

答案 0 :(得分:1)

您可以使用多个视图和控件构建整个应用程序,而无需触及Interface Builder。可以通过编程方式分配和配置UI视图和元素。

Apple甚至还有一个关于如何构建数据驱动的应用UI的WWDC 2010视频。

答案 1 :(得分:1)

如果其他人正在寻找数据驱动的UI信息,WWDC2010的WWDC帖子大约在游戏开发视频第1部分(视频401)中的40-41分钟。

除此之外,没有关于Objective-C的数据驱动UI的大量信息。我准备将它添加到现有项目中,因为我们需要在同一个屏幕上使用多个布局,并且我发现很难根据布局切换视图(从内存中破坏绑定)。

虽然不应该太难,加载plist并使用KVC设置所有值的简单框架。

如果人们不熟悉KVC,我会建议添加以下方法来阻止在设置不存在的密钥时发生的错误,尤其是如果非程序员要做一些布局。

- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
    NSLog(@"The key %@ does not exist.", key);
}

答案 2 :(得分:0)

您可以执行基于回调的方法(如UITableView,即-cellForRowAtIndexPath),也可以使用更明确的设置器(如UIMenu)来设置项目。

对于后一种方法,请使用-setObjectsArray:或类似的方法,根据输入数据配置子视图,例如,如果您有(x,y,z),请确保您有三个子视图并设置其数据到第0个视图= x,第一个视图= y等等

接下来覆盖-layoutSubviews并根据每个视图在顺序中的位置和边界设置每个视图的帧。

这有帮助吗?

答案 3 :(得分:0)

仅供参考:会议#117:“构建服务器驱动的用户体验”

您可以通过iTunesU找到它:

  1. 搜索WWDC2010
  2. 转到“应用程序框架”
  3. 获取“会话117 - 构建服务器驱动的用户体验”
  4. PDF幻灯片的链接位于页面上:WWDC 2010 Session Videos