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