【问题标题】:IPhone adding UiComponents to UiScrollView on run timeiPhone 在运行时将 UiComponents 添加到 UiScrollView
【发布时间】:2011-07-07 10:25:33
【问题描述】:

我是 Objective C 的新手,我有一个基于视图的应用程序,它与 Web 服务通信并接收一个 xml,解析它并将其内容映射到一个适当的视图组件(例如,如果那是一个日期,则使用 datepicker 显示问题,如果问题有 2 个值,则使用分段控件显示它,如果更多则使用 pickerview..etc),因此它是一个动态问题,其中许多页面填充了多个组件。

如何在运行时设计将 xml 响应映射到相关的 UI 视图组件?我想让代码尽可能面向对象,并且在我的视图控制器类中不要太多 if else,而是它应该只接收一个假设为“uiview 对象”,其中填充了必要的视图组件,它只会显示它。我有一个 UiScrollView 并想实时添加新的不同的适当 Uicomponents(Picker, textbox, label..),我该怎么做?我认为在界面生成器中我只需要放置滚动视图,其余的将在代码中?并在这里使用滚动视图是一个不错的选择?谢谢。

【问题讨论】:

    标签: iphone objective-c ios4 uiview


    【解决方案1】:
    [self.view addSubView: imageview];
    [self.scrollView addsubview:pickerview];
    [self.view addSubView:scrollview];
    

    同样,自定义视图可能类似于 uibutton、textfield、textview、imageview

    【讨论】:

    • tnx,什么是customobjectview,什么是customobject?假设我想在滚动视图中添加一个选择器视图和一个文本框,你能告诉我该怎么做以及我应该将选择器视图的委托方法放在哪里吗?因为它们将在运行时创建,所以不知道如何以及在何处添加委托..
    • 自定义对象表示您的选择器视图。例如 [self.scolview addsubview:pickerview];
    • 您是否建议将 uikit 子类化为另一种方法?
    【解决方案2】:

    你不能没有 UIScrollView。您必须定义要注入视图的元素集,并为您在接收数据处理程序中接收的 xml 数据制作 case 语句。

    如果您是 Objective-C 的新手(即 CocoaTouch)并且如果您的投票足够固定,也许您可​​以尝试在代码中设置不同的视图,您从网络上检索的数据将决定哪个视图显示。

    另一个技巧是子类化 UIKit 元素以从 XML 节点初始化它们。

    【讨论】:

    • 哪一个好做?我是一名 java 程序员,但在 Obj-C 方面的经验非常少。一个滚动页面可以包含多个组件,那么如何提前设置不同的视图,因为它们不是静态的并且不知道下一页的组件?而且我不知道在哪里以及如何实现这个组件的委托方法? tnx
    • 每次更改滚动视图的子视图时,调用滚动视图的 setContentSize 方法来提醒它调整大小的需要。
    • 另外,您可以查看:WWDC 2010:第 104 场会议 - 使用滚动视图设计应用程序 WWDC 2011:第 104 场会议 - 高级滚动视图技术第 115 场会议 - 滚动、滑动、拖动
    • 您可以使用 ivars 提前设置 ui 组件,并在您的连接委托方法中更改它们。您的委托方法将在用于处理响应的类中设置。如果您需要更具体的帮助,您应该发布一些代码。你用什么书/教程来学习 CocoaTouch ?
    • 这是一种方式,但我不确定 UITableView 是否是呈现 UI 控件元素的最佳选择。你可以坚持使用 scrollView(UITableView 是 UIScrollView 的子类)。我没有推荐的入门书籍,但我喜欢“iOS 4 Programming Cookbook”。
    猜你喜欢
    • 2012-02-14
    • 2015-06-29
    • 2017-12-19
    • 2023-03-28
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多