Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
点击按钮swift时如何隐藏视图?_Swift_Uinavigationcontroller_Uibutton_Hidden - Fatal编程技术网

点击按钮swift时如何隐藏视图?

点击按钮swift时如何隐藏视图?,swift,uinavigationcontroller,uibutton,hidden,Swift,Uinavigationcontroller,Uibutton,Hidden,在第一视图控制器中,我们有两个按钮 如果我们点击第一视图控制器oneButn,我需要在第二视图控制器中隐藏onebutnContainerView 如果我们点击第一视图控制器secndButn,我需要在第二视图控制器中隐藏TwoBuntnContainerView 在第一个视图中,控制器viewController.oneButnContainerView.isHidden=true获取错误: 线程1:致命错误:隐式展开可选值时意外发现nil 第一视图控制器代码: 我在第二视图控制器中有两个视图

在第一视图控制器中,我们有两个按钮

如果我们点击第一视图控制器oneButn,我需要在第二视图控制器中隐藏onebutnContainerView

如果我们点击第一视图控制器secndButn,我需要在第二视图控制器中隐藏TwoBuntnContainerView

在第一个视图中,控制器viewController.oneButnContainerView.isHidden=true获取错误:

线程1:致命错误:隐式展开可选值时意外发现nil

第一视图控制器代码:

我在第二视图控制器中有两个视图的插座


如何在firstviewcontroller中隐藏seconviewcontroller视图这是因为您试图隐藏尚未初始化的视图。根据经验,请记住,实例化viewController时,只能访问其数据,不能访问其视图。有两种方法可以解决此问题:

在secondViewController内创建2个变量: 变量IsoneButnContainerviceWhidden:Bool=false 变量IstwobutnContainerviceWhidden:Bool=false

为firstViewController中的这两个变量指定一个值:

   let viewController = self.storyboard?.instantiateViewController(withIdentifier: "NewZoomAddressViewController") as! NewZoomAddressViewController;
    viewController.delegate = self
    viewController.isOneButnContainerViewHidden= false
    viewController.isTwoButnContainerViewHidden= true
    self.navigationController?.pushViewController(viewController, animated: true);
现在,在第二个ViewController的ViewDiLoad或ViewWill中,根据创建的两个变量的值隐藏/显示按钮ContainerViews:

第二种方法是在访问viewController的视图之前,通过在secondViewController上调用LoadViewIfRequired来强制viewController布局视图。在本例中,您尝试隐藏/显示视图

     @IBOutlet weak var oneButnContainerView: UIView!
     @IBOutlet weak var twoButnContainerView: UIView!
   let viewController = self.storyboard?.instantiateViewController(withIdentifier: "NewZoomAddressViewController") as! NewZoomAddressViewController;
    viewController.delegate = self
    viewController.isOneButnContainerViewHidden= false
    viewController.isTwoButnContainerViewHidden= true
    self.navigationController?.pushViewController(viewController, animated: true);
    oneButnContainerView.isHidden = isOneButnContainerViewHidden
    twoButnContainerView.isHidden = isTwoButnContainerViewHidden