在stackview swift ios

时间:2018-06-08 07:13:54

标签: ios swift uitableview uistackview

我在表格视图单元格中添加了一个堆栈视图,我添加了一个textField,一个textView,以及其他视图及其子视图(图像标签),我添加了相应小部件的按钮,当我单击按钮时,各自小部件应该出现,其他小部件应该被隐藏但是出现的小部件在整个堆栈视图上放大,我希望小部件应该占用它的原始大小,其他大小的隐藏小部件应该是空的。

注意:我在堆栈视图中添加了一些UIvIEWs和textfield以及Textview,现在我只想显示一个视图或TextField或Textview基于我点击的Button然后堆栈视图应隐藏其他小部件(如剩余的视图或文本)字段或textview除了被点击的内容之外),它在这里做得很好,但错误是选中或显示的小部件在大小上放大并占据隐藏的其他小部件的所有spcae

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var Cell : UITableViewCell?
        Cell = firstTableView.dequeueReusableCell(withIdentifier: "firstCell")! as UITableViewCell
        if widgetInstockArray.count == 0 && labelInstockArray.isEmpty {
            print("no textFields in instock")
        }
        else {
            print("widget process i in winstock loop")
            let i = widgetInstockArray[indexPath.row]
                if i.contains(wTextField)  {
                    print("textField was placed")
                    Cell?.contentView.viewWithTag(1)?.isHidden = true
                    Cell?.contentView.viewWithTag(2)?.isHidden = false
                    Cell?.contentView.viewWithTag(3)?.isHidden = true
                    Cell?.contentView.viewWithTag(6)?.isHidden = true
                    Cell?.contentView.viewWithTag(9)?.isHidden = true
                    Cell?.contentView.viewWithTag(12)?.isHidden = true
                    Cell?.textLabel?.text = labelInstockArray[indexPath.row]
                   }
                else {
                    print("no textField exist")
            }
            if i.contains(wCamView) {
                Cell?.contentView.viewWithTag(1)?.isHidden = true
                Cell?.contentView.viewWithTag(2)?.isHidden = true
                Cell?.contentView.viewWithTag(3)?.isHidden = false
                Cell?.contentView.viewWithTag(6)?.isHidden = true
                Cell?.contentView.viewWithTag(9)?.isHidden = true
                Cell?.contentView.viewWithTag(12)?.isHidden = true
                Cell?.textLabel?.text = labelInstockArray[indexPath.row]
            }
            else {
                print("nothing cam")
            }
            if i.contains(wTextView) {
                Cell?.contentView.viewWithTag(1)?.isHidden = false
                Cell?.contentView.viewWithTag(2)?.isHidden = true
                Cell?.contentView.viewWithTag(3)?.isHidden = true
                Cell?.contentView.viewWithTag(6)?.isHidden = true
                Cell?.contentView.viewWithTag(9)?.isHidden = true
                Cell?.contentView.viewWithTag(12)?.isHidden = true
                let tvLabel = UILabel(frame: CGRect(x: 10, y: 10, width: 200, height: 30))
                tvLabel.text = "You title"
                Cell?.contentView.viewWithTag(1)?.addSubview(tvLabel)
                Cell?.textLabel?.text =  labelInstockArray[indexPath.row]
                }
              else {
                }

            if i.contains(wCheckBox) {
                Cell?.contentView.viewWithTag(1)?.isHidden = true
                Cell?.contentView.viewWithTag(2)?.isHidden = true
                Cell?.contentView.viewWithTag(3)?.isHidden = true
                Cell?.contentView.viewWithTag(6)?.isHidden = true
                Cell?.contentView.viewWithTag(9)?.isHidden = true
                Cell?.contentView.viewWithTag(12)?.isHidden = false
                Cell?.textLabel?.text =  labelInstockArray[indexPath.row]
            }
            else {
            }
            if i.contains(wDateView) {
                Cell?.contentView.viewWithTag(1)?.isHidden = true
                Cell?.contentView.viewWithTag(2)?.isHidden = true
                Cell?.contentView.viewWithTag(3)?.isHidden = true
                Cell?.contentView.viewWithTag(6)?.isHidden = true
                Cell?.contentView.viewWithTag(9)?.isHidden = false
                Cell?.contentView.viewWithTag(12)?.isHidden = true
                Cell?.textLabel?.text =  labelInstockArray[indexPath.row]
            }
            else {
            }

            if i.contains(wSignView) {
                Cell?.contentView.viewWithTag(1)?.isHidden = true
                Cell?.contentView.viewWithTag(2)?.isHidden = true
                Cell?.contentView.viewWithTag(3)?.isHidden = true
                Cell?.contentView.viewWithTag(6)?.isHidden = false
                Cell?.contentView.viewWithTag(9)?.isHidden = true
                Cell?.contentView.viewWithTag(12)?.isHidden = true
                Cell?.textLabel?.text =  labelInstockArray[indexPath.row]
            }
            else {
            }
            print("could not add widgets")
        }

    Cell?.selectionStyle = UITableViewCellSelectionStyle.none
    return Cell!
    }

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您没有要在空白区域显示任何内容,请在底部添加一个空白视图,以填充空白区域。

如下面的屏幕所示

enter image description here

enter image description here

答案 1 :(得分:0)

向UIStackView添加四个UIView,并将UIStackView的约束条件设为上,左,右为15,高度为100。

然后,单击StackView的高度约束,并将优先级更改为750,然后,将法线更改为虚线[图像1]。

图片1

enter image description here

然后,StackView轴应该是垂直的,对齐和分布将是填充和间距为10 [图像2]。

图片2:

enter image description here

然后,现在使用UIView

您必须单击每个视图并为此设置高度约束。只有高度限制才能添加[图像3]。

图片3

enter image description here

然后,如果您尝试运行,您将获得所需的输出。试试样品,然后继续你的项目。

相关问题