这个新手只是因为某些原因没有得到正在发生的事情没有错误或者上下打印语句都被执行了什么,而下一个类函数中的打印没有被执行?
class LoginController: UIViewController{
var blankController:ViewController?
func handleLogin(){
if let loginVCobj = self.containerCustom.currentViewController as? LoginClass
{
guard let loginEmail = loginVCobj.LoginName.text else{
print("No Login Name to submit")
return
}
guard let loginPassword = loginVCobj.LoginPassword.text else {
print("No Login Password to submit")
return
}
Auth.auth().signIn(withEmail: loginEmail, password: loginPassword){ (user, error) in
if error != nil{
print(error)
return
}
print("user Logged in") <---- its printed
///// updated to initialize ////
self.blankController = UIStoryboard(name: "Main",
bundle:nil).instantiateViewController(withIdentifier:
"SWBlankRevealVCStoryBoard") as? ViewController
self.blankController?.customNavigationBar() *-----NO PRINT
print("Passed the BlankController") . <---- its printed
self.dismiss(animated: true, completion: nil)
}
}
}
}
现在是另一个名为ViewController的类
class ViewController: UITableViewController{
func customNavigationBar(){
//something about the customizing the Nav Bar
print("stupid call")
}
}
答案 0 :(得分:1)
self.blankController?.customNavigationBar() *-----NO PRINT
您的self.blankController
可能为零,因为您尚未初始化视图控制器。
为了确保您的视图控制器已初始化,在使用之前(其属性)请尝试按照
(用以下内容替换您的打印行self.blankController?.customNavigationBar()
):
print("self.blankController = \(self.blankController)")
// it may print self.blankController = nil
或
if let viewcontroller = self.blankController {
viewcontroller.customNavigationBar()
} else {
print("blankController may be nil")
}
有几种方法可以初始化视图控制器(取决于视图控制器的界面构建器文件)。
使用Storyboard :如果您的界面构建器位于故事板内
blankController = UIStoryboard(name: "<Storyboard Name/String>", bundle: nil).instantiateViewControllerWithIdentifier("<view controller identifier>") as! ViewController
// Note: Do not forget to set identifier of your view controller, otherwise this will result into app crash. You've extended your ViewController with UITableViewController, so ensure implementation of all necessary datasource and delegate in your ViewController.
这是参考图片,帮助您,如何查找/设置视图控制器的标识符,
// ----------------
的更新强>
问题的原因是您的ViewController
在您的代码中被UITableViewController
扩展了。
class ViewController: UITableViewController
但是在你的故事板中,同样属于SWRevealViewController....
的类,而不是UITableViewController
。
<强>解决方案强>
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// return number of row
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
// return UITableViewCell
}
}