2017-08-07 59 views
1

刚刚没有得到什么是由于某些原因,没有错误或任何事情都是上下两个打印语句执行,而在下一个类功能的打印不执行?为什么不同的swift类中的函数没有被调用?

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) 

     }  

    } 

    } 
} 

现在不同类命名视图控制器

class ViewController: UITableViewController{ 

func customNavigationBar(){ 
    //something about the customizing the Nav Bar 

    print("stupid call") 
} 

} 

enter image description here

+0

你已经初始化'blankController'变量?据我所知,你还没有这是为什么函数没有被调用。 –

+0

因为你不是真的创建ViewController的对象? –

+0

@ElTomato我该怎么做? –

回答

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") 
} 

有几种方法可以初始化视图控制器(取决于视图控制器的界面生成器文件)。

使用情节提要:如果你的界面生成器位于情节提要

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. 

这里面是参考图像,帮助你,如何找到视图控制器/集标识符,

enter image description here


// ----------------
更新
问题的原因是你的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 
    } 
} 
+0

是的,这是一个愚蠢的零!!谢谢。对此,我该如何解决这个问题? –

+0

再次感谢您的简要描述,但由于某种原因仍然最终成为零! –

+0

已更新代码 –

相关问题