扩展,选择器和通过扩展添加子视图

时间:2016-05-10 11:52:10

标签: ios swift uiview

我的常用功能是在我的应用程序的几乎所有页面中显示角落设置列表。我曾想过使用扩展来实现这个共同的功能。

我的代码 -

我创建了一个NSObject子类,并在其中有一个UIViewController的扩展 -

setCornerSettingsTableView()

用法 - 在我需要显示的任何视图控制器中,我只需致电 - MyEntity data = entityRepo.GetAll().Where(a => a.UserId == id).FirstOrDefault(); Model.EightWatseChkBox = data.EightWaste.Split(new char[]{ ',' }).Select(x => new CheckBox() { Text = x, Checked = true }).ToList();

问题 - 正如您所看到的,我正在尝试向我的蒙版视图添加点击手势识别器,以便每当用户点击蒙版视图时,它会删除蒙版视图以及其中的表格视图,但我无法实现这一点。

如果有任何其他建议,欢迎提出。

1 个答案:

答案 0 :(得分:2)

extension UIViewController
{

    func setCornerSettingsTableView()
    {
        if let theMask = self.view.viewWithTag(666) as? UIView {
              return  // already setted..
        } else {
           let maskView = UIView()
           maskView.tag = 666
           maskView.frame = self.view.bounds
           maskView.backgroundColor = UIColor.lightGrayColor()
           let tableView = self.storyboard?.instantiateViewControllerWithIdentifier("cornerSettingVC") as! cornerSettingVC

           addChildViewController(tableView)
           tableView.view.frame = CGRectMake(maskView.frame.width-maskView.frame.width/2.5, 0,self.view.frame.width/2.5, self.view.frame.height-200)
           maskView.addSubview(tableView.view)


           let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissMaskView")
           maskView.addGestureRecognizer(tap)


           self.view.addSubview(maskView)
         }
    }

    func dismissMaskView()
    {
        print("dismiss called")//function called but how to dismiss the mask View
        if let theMask = self.view.viewWithTag(666) as? UIView {
            theMask.removeFromSuperview()
        }
    }  


}