2014-09-20 2 views
1

내 탭의 컨트롤러와 탭 중 하나가 이후에 어떤 일이 발생하는지는 관리자 만 볼 수 있습니다. 그래서 나는 암호로 탭을 보호하고 있었다. 나는뷰가로드되거나 나타나지 않도록하기

한다고 가정 나는 사용자가 변수 inputTextField에 대화 상자에 입력 한 텍스트를 얻을 수 있습니다 (방법에 의해 UITableViewController입니다) 내보기 컨트롤러의 viewDidLoad 기능에 약간의 모달 대화를 추가 생각했다.

viewDidLoad()에서 코드의 관련 섹션 :

if inputTextField?.text != "secret" { 
    return 
} 
super.viewDidLoad() 

그러나이 작동하지 않습니다. 어떤 힌트도 감사합니다. 미안해. 너무 근본적이라면, 나는 iOS와 Swift 프로그래밍에 완전히 익숙하다. 그래서 나의 무식한 사람들을 용서해라.

+0

"작동하지 않음"을 정의하십시오. 그것은 나타나지 않는다? 비밀번호를 수락하지 않습니까? 그것은 어떤 암호를 받아들입니까? 패스워드 체크는'viewDidLoad()'가 아니라'viewWillLoad()'에 있어야한다. 그래서 패스워드가 잘못되었을 때 컨트롤러가 중단 될 수있다. – NRitH

+0

"작동하지 않습니다"라는 말은 입력 한 암호가 일치하지 않아도 어쨌든보기가 표시되었음을 의미합니다. viewWillLoad() 사용하려고했지만 UITableViewController viewWillLoad() 메서드가 없습니다. –

답변

1

다음은 간단한 예입니다. 많은 방법. Storyboard에 첫 번째 탭의 VC에 두 개의 UIView를 놓았습니다. 뒤쪽에있는 하나는 어두운 색으로 숨겨진 비밀보기 (secretView)를 시뮬레이트했습니다. 상단 (entryView)에서보기의 안쪽에 "Enter Passcode"레이블과 텍스트 필드 (passCode)를 끌었습니다. 비밀 코드가 맞지 않으면 뒷 배경을 숨겼습니다.

import UIKit 

class FirstViewController: UIViewController, UITextFieldDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.passCode.delegate = self 
     entryView.hidden = false 
     secretView.hidden = true 
    } 


    @IBOutlet weak var entryView: UIView! 
    @IBOutlet weak var secretView: UIView! 
    let secretCode = "X" 

    @IBOutlet weak var passCode: UITextField! 


    func textFieldShouldReturn(textField: UITextField!) -> Bool { 

     if textField.text == secretCode { 

      entryView.hidden = true 
      secretView.hidden = false 

     } else { 

      self.passCode.text = "Try Again!" 
     } 

     textField.resignFirstResponder() 
     return true 
    } 
} 
+0

2 개의 UIView를 기존 VC로 드래그하여 위를 시도해 보았습니다. 감사합니다. 두 개의 서로 다른 VC에 대해이 작업을 수행 할 수 있습니까? 이는 동일한 VC에 2 개의 뷰를 넣지 않고 수행합니다. 나는 또한 tabbarcontoller 자식 클래스를 만들고 shouldSelectViewController에서 탭 프레스를 잡기를 바랬다. 그러나 지금까지 행운이 없습니다. –

+0

물론입니다! 한 가지 방법은 정답에 따라 다른보기 컨트롤러에 연결하는 것입니다. 코드에 대한 도움이 필요하시면 알려주십시오. –

관련 문제