我创建了新的子视图
let storyboard = UIStoryboard(name: "Main", bundle: nil)
controller = storyboard.instantiateViewControllerWithIdentifier("menu") as! MenuViewController
controller.view.frame = CGRectMake(0, -150, self.view.frame.size.width, 150);
mainView.addSubview(controller.view)
controller.view.layer.zPosition = 1
controller.viewDidLoad()
然后我在viewController上添加按钮
但我无法点击按钮......
我可以选择我的新控制器下面的文字(我添加照片)
答案 0 :(得分:0)
您的代码几乎没有问题。
首先,根据代码范围的限制,您无需知道,您无需将图层的addSubview
属性设置为默认值零以外的任何值。使用controller.view.frame = CGRectMake(0, -150, self.view.frame.size.width, 150);
,您添加的视图会自动添加到所有当前子视图的顶部。
其次,基本上以编程方式创建框架没有任何问题,但是这往往会导致屏幕尺寸不同的设备出现问题。此外,当您将视图的宽度设置为等于另一个视图的宽度时,我建议使用自动布局,如果更改宽度将自动更新宽度。它还允许您跨所有设备屏幕尺寸/大小类创建响应式界面。
controller.viewDidLoad()
第三,没有必要手动触发y
,因为一旦设置了帧,它就会被自动调用。
第四,(!)您将视图的框架设置为隐藏在屏幕顶部。我不确定这是否是正确的功能,但是想确保您知道通过将视图的controller
原点设置为等于框架的原点,视图的底部将对齐超级视图的顶部。
容器视图控制器是包含其他视图控制器的视图控制器,允许您创建更多模块化代码,并将视图分离到托管视图控制器中。应该使用这种模式。
有关详细信息,请参阅https://www.objc.io/issues/1-view-controllers/containment-view-controller/。
在下面的代码中,我还会检查MenuViewController
变量是否为nil,这可以防止在您尝试强制打开控制器并且它不是类let storyboard = UIStoryboard(name: "Main", bundle: nil)
if let controller = storyboard.instantiateViewControllerWithIdentifier("menu") as? MenuViewController {
controller.view.frame = CGRectMake(0, -150, self.view.frame.size.width, 150);
// Frame may need to be modified to be made visible ^
addChildViewController(controller)
controller.willMoveToParentViewController(self)
mainView.addSubview(controller.view)
controller.widMoveToParentViewController(self)
}
时发生崩溃。可以理解,这有点迂腐,因为您可能确定实例化的视图控制器是正确的,但是安全总是比抱歉更好。
-- Disable Index
ALTER INDEX [IXYourIndex] ON YourTable DISABLE
GO
-- Insert Data
-- Enable Index
ALTER INDEX [IXYourIndex] ON YourTable REBUILD
GO