在自定义UITableViewCell中访问子视图

时间:2015-11-11 09:51:49

标签: ios iphone swift uitableview swift2

背景

我正在尝试创建一个包含大约4种不同单元格布局的表格视图。

首先,我考虑使用静态表视图来解决问题,因为行数有些固定(不超过10)

但是,经过一番思考后,我认为我并不想与UITableViewController绑在一起。因此,我尝试使用动态表视图来实现它。

问题:

在创建4个原型单元格之后,我发现我需要访问单元格中的子视图(以更新它们的值)。但我知道的唯一可能方式似乎是:

1. Create a subclass for each prototype cell, and create `IBOutlet` to the child views

2. Assign `tag` for each child view for later access

但我并不喜欢这两种方法......

第一个问题太麻烦了,第二个解决方案中的标签似乎非常特殊(通过一些幻数来访问子视图......)

所以,我想知道:

  1. 有没有更好的实践来实现这种方法     实现代码如下。 (多个单元原型和固定行号)

  2. 静态表视图是更好的方法吗?如果是的话,会有     当我被绑定到UITableViewController时有任何限制吗? 例如,如果我需要更复杂的用户界面,并决定向其添加更多观看次数,则UITableViewController的灵活性会低于UIViewController

  3. 非常感谢你!

2 个答案:

答案 0 :(得分:0)

1.如果要访问他的IBOutlets,您需要继承UITableViewCell。 为了区分单元格,只需使用isKindOfClass

2.这取决于你的细胞彼此之间的差异。如果它们的结构略有不同,您可能需要考虑将元素放在cellForRow中。尝试看一下内置结构,因为它可能会为你节省一些子类。 这些结构具有内置参数,例如:图像,文本等。 他们的结构更严格,但

论文是可用的类型:

UITableViewCellStyleDefault,    // Simple cell with text label and optional image view (behavior of UITableViewCell in iPhoneOS 2.x)
UITableViewCellStyleValue1,     // Left aligned label on left and right aligned label on right with blue text (Used in Settings)
UITableViewCellStyleValue2,     // Right aligned label on left with blue text and left aligned label on right (Used in Phone/Contacts)
UITableViewCellStyleSubtitle    // Left aligned label on top and left aligned label on bottom with gray text (Used in iPod).

我真的不明白为什么要使用标签?

答案 1 :(得分:0)

如果单元格非常相似但布局不同,它们可以共享一个共同的UITableViewCell子类,前提是该类不需要知道布局,只需配置可用的插座。

如果代码确实需要知道所使用的布局,那么最好将它们作为单独的子类。

对于Swift使用isas?来确认单元格的正确子类(对于Objective C,它将是isKindOfClass方法。)