2016-03-12 2 views
0

Я представляю Xib-файл, который является подвью в контроллере представления, контроллер вида вызывается setViewController в диспетчере просмотра страниц. Он отлично работает. Затем я поместил один и тот же вид представления Xib в контроллер вида, вызываемый моим контроллером представления вкладок, и он не отображает.Xib-файл отображается при вызове моего контроллера просмотра страницы, но не как вкладка

Чтобы попытаться дойти до конца этого странного события, я удалил весь код, чтобы в обоих случаях не было класса, связанного с родителем UIviewcontroller для subview Xib. Теперь это чистая реализация IB Xib, а классы Xib идентичны.

Таким образом, при сравнении между двумя реализациями единственное различие заключается в том, что один открывается с контроллера просмотра страницы, а другой с вкладки. Я даже скопировал рабочий контроллер, так что я знал, что они идентичны.

У кого-нибудь был этот опыт (где тот же Xib не отображает в одном рабочем процессе по сравнению с другим) или не имеет идеи, почему две реализации приводят к разным результатам?

Обновление: Я сделал это еще на один шаг. Теперь нет абсолютно никакого кода. Единственное, что есть в Xib, это непривязанная метка. Он отображается только тогда, когда родительский вид вызывается из контроллера просмотра страницы! Wtf

Signin View Xib. (Работает, когда экземпляр из UIPageViewController:

enter image description here

SigninView.swift

class SigninView: UIView, GIDSignInUIDelegate, GIDSignInDelegate { 

    var view: UIView! 
    var nibName: String = "SigninView" 
    var delegate: SigninViewDelegate? 

    @IBOutlet weak var googleButton: GIDSignInButton! 
    @IBOutlet weak var signoutButton: UIButton! 


    override init(frame: CGRect) { 
     // properties 
     super.init(frame: frame) 

     // Set anything that uses the view or visible bounds 
     setup() 
    } 

    override func awakeFromNib() { 
     print("AWAKING!") 
    } 

    @IBAction func tapSignOut(sender: AnyObject) { 
     GIDSignIn.sharedInstance().signOut() 
     UserManager().logout() 
     self.updateDisplay() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     // properties 
     super.init(coder: aDecoder) 

     // Setup 
     setup() 
    } 


    func setup() { 
     view = loadViewFromNib() 

     GIDSignIn.sharedInstance().uiDelegate = self 
     GIDSignIn.sharedInstance().delegate = self 

     view.frame = bounds 
     view.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight] 
     addSubview(view) 
     self.updateDisplay() 

    } 

    func updateDisplay() { 
     self.googleButton.layer.hidden = false 
    } 

    func loadViewFromNib() -> UIView { 

     let bundle = NSBundle(forClass: self.dynamicType) 
     let nib = UINib(nibName: nibName, bundle: bundle) 
     let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView 

     return view 
    } 

    func signIn(signIn: GIDSignIn!, presentViewController viewController: UIViewController!) { 

     //present vc on delegate 
     let delegateVC = self.delegate as! UIViewController 
     delegateVC.presentViewController(viewController, animated: true, completion: nil) 

    } 

    func signIn(signIn: GIDSignIn!, dismissViewController viewController: UIViewController!) { 

     print("Dismiss view controller") 

     let delegateVC = self.delegate as! UIViewController 
     delegateVC.dismissViewControllerAnimated(true, completion: nil) 
     self.updateDisplay() 

    } 

    func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) { 

     var success = false 

     if (user != nil) { 
      print("signed in? UID: \(user.userID), email: \(user.profile.email), name: \(user.profile.name), pic: \(user.profile.imageURLWithDimension(150))") 


      UserManager().createUser(user) 
      LocalDataStorage().saveContext() 

      success = true 

     } else { 
      print("User not signed in.") 
     } 

     self.updateDisplay() 

     if self.delegate != nil && self.delegate!.signInComplete != nil { 
      self.delegate!.signInComplete!(success) 
     } 


    } 

    func signIn(signIn: GIDSignIn!, didDisconnectWithUser user: GIDGoogleUser!, withError error: NSError!) { 
     print("disconnected") 
    } 

} 

Рабочая UIViewController, который содержит рабочую подвид зарегистрировались

enter image description here

Работа звонок от UIPageViewController

let vc = UIStoryboard(name: "Intro", bundle: nil).instantiateViewControllerWithIdentifier("IntroPage2") 
setViewControllers([getSlide(index)],direction: .Forward,animated: true,completion: nil) 

UIViewController называется из вида вкладок, что не делает для входа в аккаунт подтаблицы

enter image description here

+0

Вам нужно будет опубликовать код, чтобы мы могли видеть, что может вызвать проблему. –

+0

@CleverError Code и просмотры добавлены. <* пальцы скрещены *> – Sean

+0

Это, вероятно, какая-то тривиальная ошибка. Не могли бы вы поделиться всем проектом? – Sulthan

ответ

0

Я отправляю ответ, но на самом деле это больше из работать вокруг. После нескольких часов попыток ограничить взгляды, я получу код, работающий последовательно. Для его создания создан Xib и новый VC файл для модуля Signin. Я скопировал весь код из моего исходного класса Signin в новый, и он сработал. Код не был изменен.

Так что, если кто-либо сталкивается с болезненной болезненной ситуацией, дайте это выстрел! Это может быть ошибкой XCode.

Смежные вопросы