我已将一个ViewController作为子视图添加到UIWindow&在视图控制器中添加了一个tableView,但是当我点击设备和放大器中的单元应用程序崩溃时细胞在模拟器中消失了Strange Issue !!!
class func addSideMenu(viewControllerName : String)->UIView{
let storyboard = UIStoryboard(name: MAIN_STORYBOARD, bundle: nil)
let vc = (storyboard.instantiateViewControllerWithIdentifier(viewControllerName))
vc.view.frame = CGRectMake(-(UIScreen.mainScreen().bounds.width + 100),0, UIScreen.mainScreen().bounds.width - 100, UIScreen.mainScreen().bounds.height)
print(vc.view.frame)
vc.view.tag = 200
return vc.view
}
newView = Utilities.addSideMenu("SideMenuViewController")
UIApplication.sharedApplication().delegate?.window!!.addSubview(newView!)
答案 0 :(得分:0)
创建视图控制器,查看视图,然后让控制器超出范围是一个坏主意。如果这样做,视图中的任何依赖项(例如表视图委托函数)都可能会崩溃。
只要您使用其视图,就应该保持控制器,或者如果您必须丢弃控制器,请确保它与视图没有连接。
答案 1 :(得分:0)
您的视图控制器应该是UIViewController
或UITableViewController
的子类,减少您绕过继承的依赖项并导致不必要的行为。
此外,您的视图控制器应该在初始值设定项中有tableView.delegate = self
和tableView.dataSource = self
或viewDidLoad()
这可能是您案例的问题的一部分。