2016-11-01 2 views
0

이상한 문제가 있습니다. 등록 뷰 컨트롤러가 있습니다. 거기에서 간단한 텍스트 필드가있는 등록 완료 후 두 번째 viewcontroller로 이동합니다. 이제 텍스트 필드를 탭하면 textFieldDidBeginEditing을 실행하면 치명적인 오류가 발생합니다.치명적인 오류가 발생했습니다 : 예기치 않게 찾을 수 없습니다. 언로드 중에 텍스트 필드를 편집하는 동안 선택 값을

fatal error: unexpectedly found nil while unwrapping an Optional value 

다음 것은 내가 중단 점

0xc7b108 <+68>: bl  0xcd0198     ; function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded> of Swift.(_fatalErrorMessage (Swift.StaticString, Swift.StaticString, Swift.StaticString, Swift.UInt) ->()).(closure #2) 
0xc7b10c <+72>: trap 

에 붙어있어 상황이 지금까지 확인했다.

  1. @IBOutlet가 연결되었습니다.
  2. textfield.delgate가 self로 설정됩니다.
  3. 텍스트 필드 내가, 내가, 텍스트 필드를 편집 할 수 있습니다 다시 응용 프로그램을 시작하고 같은의 ViewController (두 번째의 ViewController)로 이동하면 지금 가장 관심을 것입니다 (textFieldDidBeginEditing 섹션에서 기록 texfield 변수)

전무 없습니다. 덫이나 충돌이 없어야합니다. 등록 완료 직후에 secondviewcontroller를 누르는 동안이 문제가 발생합니다. 등록 후

나는 didFinishLaunchingWithOptions 두 번째의 ViewController를 탐색 또한

let instanceViewController = self.storyboard?.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController 
self.navigationController?.pushViewController(instanceViewController, animated: true) 

내가 누구의 로그인 자격 증명 AppDelegate에 저장됩니다 다음 코드를 사용하고 두 번째의 ViewController를 탐색 할이 코드를 사용하고

NB :이 코드는 성공적인 등록 후 사용자가 앱을 종료하고 앱을 다시 시작하려고 시도 할 때만 실행됩니다.

let userDefaults = NSUserDefaults.standardUserDefaults() 
if let isUserLogin:Bool = userDefaults.boolForKey(ConstantsKey.UserDefault.isLogin){ 
    let objMainViewController = self.storyboard?.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController 
    let navController = UINavigationController.init(rootViewController: objMainViewController) 

    self.window?.makeKeyAndVisible()    
    self.window?.rootViewController = navController 
} 

나를 도와 줄 수있는 사람이 있습니까?

+0

'textFieldDidBeginEditing'의 내용은 무엇입니까? – chengsam

+0

@chengsam : 아무것도 없습니다. – Poles

답변

0
let instanceViewController = self.storyboard?.instantiateViewControllerWithIdentifier("SecondViewController") as? SecondViewController 
0

죄송합니다. 나는 그것을 이해했다고 생각한다.

키보드로 인해 발생했습니다. keyboardWillShow 알림. 이제 keyboardWillShow 알림 함수는 등록 viewcontroller에서 구현되며 같은 viewcontroller의 다른 텍스트 필드 변수로 작업하고 있습니다. 그래서 keyboardWillShow가 secondviewcontroller에 대해 실행될 때 등록 페이지의 텍스트 필드가 nil이라는 치명적인 오류를 발견했습니다.

해결책 : 방금 1의 기능에서 등록 된 viewcontroller viewcontroller에서 관찰자를 제거해야했습니다.

관련 문제