带有SegmentControl的TableViewCell

时间:2016-02-22 07:38:00

标签: ios objective-c uitableview uisegmentedcontrol

我有tableview,其中特定单元格中包含UISegmentedControl。 我怀疑的是,当选择特定片段时,我需要展开单元格并显示下面的信息,并在选择其他片段时需要隐藏它。

对于Ex: 我有三个段A,B和C.当选择段B时,我需要在段下面显示开关,当选择其他两个段时,不必在段下面显示任何内容。

2 个答案:

答案 0 :(得分:0)

您的dataSource对象应具有“扩展”属性。

每次更改segmentedControl时,请相应地更新您的dataSource并重新加载您的单元格。

配置单元格时,请根据对象的“扩展”属性更改其大小。

答案 1 :(得分:0)

这里有几件事要做。您需要确保您的tableview使用自动尺寸作为其单元格高度。不要使用-heightForRowAtIndexPath方法(删除它)。而是在tableview上设置两个属性:

[self.tableview setEstimatedRowHeight:110];
[self.tableview setRowHeight:UITableViewAutomaticDimension];

这样可以为每个单元格启用正确的自动布局(如果您还没有)。

你需要在代码中有一个UITableViewCell的子类,如果你还没有(抱歉跳过一些相当大的东西!)。在Interface Builder中将信息标签添加到您的单元格。给它一个高度约束,然后将这个高度约束拖到你的单元子类中,这样你就可以改变它。

现在将代码用于处理子类中的分段控件。当您检测到已选择中心段时,则会影响信息标签的高度约束,如下所示:

self.labelHeightConstraint.constant = 40;

您可能还需要调用setNeedsLayout:

[self setNeedsLayout];

为简洁道歉 - 希望这会指出你正确的方向。还有一些其他细节 - 例如on -prepareForReuse方法(在单元格上),您可以将信息标签的高度设置为0(并再次调用setNeedsLayout)。

相关问题