2012-08-11 95 views
0

我在iOS(iPhone)中有一个视图,它具有多个组件,按堆栈方式(下一个顶层)组织。这些是用户帐户属性,有些可能是空白的。iOS中的“紧凑”视图

所以,我有我的观点的元件布局是这样的:

UITextField1(名称)

UITextField2(位置)

UITextField3(年龄)

UITextView1(BIO)

的UITableView(用户项)。

某些字段可能为空。我不希望空白字段有空格,我希望下一个字段向上移动。

这就像是这样的flowlayout问题:What is the best/easiest way to create 'flow layout' type layout in iOS

我只能看到处理这个问题有两种方式:

  1. 创建遍历所有UIViews,并确定哪些是留空,并进入下一个上功能。
  2. 创建UITableView并为内容为空的单元格使用不同的单元高度。

理想情况下会有一个组件,但我找不到它(基本上是某种堆栈/流布局)。无论如何,我相信我会执行上面的选项#1,但我不知道是否有一个“标准”的方式来完成此任务(我老实说,甚至不知道适当的术语来看看为此功能)。

谢谢。

回答

1

我会通过使用UITableView而不是您建议的方式来更倾向于您的第二选择的方向。

这将使用一个UITableView是我的方法:

  1. 我 每一个部件创建一个UITableViewCell(或自定义单元格),并指定一个标签值每,我们将在以后使用这些。你可以在viewDidLoad中做到这一点。

  2. 在numberOfRowsInSection中添加代码,以检查哪些字段有数据值存在 。返回总数领域 数量的数据再次值

  3. 在的cellForRowAtIndexPath,检查是否存在该字段 如果是这样的数据,检查,看看是否在步骤中创建的小区中的一个已经创建或不(如果不是,则创建) 如果不是,则增加某种计数器以增加标记值并找到具有值的下一个字段。一旦找到,使用该“标签/索引”号码来“返回”适当的单元格。

最后,你有一个UITableView只显示数据字段。

+0

谢谢。我的问题是,我的布局中的部分组件是tableviews(滚动)。所以,如果我这样做,我将不得不允许所有字段的滚动(我不想要的),或从桌面视图中移除滚动。 – rufo 2012-08-13 13:39:58

+0

所以你有多个表格视图一次显示?如果是这样,为什么不使用具有多个部分的单个表视图? – radesix 2012-08-14 20:15:01

+0

因为布局比这更复杂。我有带按钮的“线条”,带有小字体的3个标签的行,带有2个标签的行等等。底部有一个UITableView。我可以为每种情况实现所有的UITableViewCells,但听起来像很多工作。 – rufo 2012-08-15 03:28:48