[ios] 프로그래밍 방식으로 Swift의 이전 ViewController로 돌아갑니다.

버튼 클릭으로 사용자를 페이지로 보냅니다. 이 페이지는 UITableViewController 입니다.

이제 사용자가 셀을 탭하면 이전 페이지로 다시 밀고 싶습니다.

나는 비슷한 것에 대해 생각 self.performSegue("back")....했지만 이것은 나쁜 생각 인 것 같습니다.

올바른 방법은 무엇입니까?



답변

스위프트 3 :

이전 뷰 컨트롤러로 돌아가려면

_ = navigationController?.popViewController(animated: true)

루트 뷰 컨트롤러로 돌아가려면

_ = navigationController?.popToRootViewController(animated: true)


답변

스위프트 3 , 스위프트 4

if movetoroot {
    navigationController?.popToRootViewController(animated: true)
} else {
    navigationController?.popViewController(animated: true)
}

navigationController는 선택 사항이 아니므로 선택 사항입니다.


답변

스위프트 3

나는 대답에 늦었을 수도 있지만 신속한 3의 경우 다음과 같이 할 수 있습니다.

override func viewDidLoad() {
    super.viewDidLoad()

    navigationItem.leftBarButtonItem = UIBarButtonItem(title: "< Back", style: .plain, target: self, action: #selector(backAction))

    // Do any additional setup if required.
}

func backAction(){
    //print("Back Button Clicked")
    dismiss(animated: true, completion: nil)
}


답변

스위프트 4

이전 ViewController로 돌아가거나 되 돌리는 두 가지 방법이 있습니다.

  1. 첫 번째 경우 사용한 경우 : self.navigationController?.pushViewController(yourViewController, animated: true)

    이 경우에 당신이 필요로 사용self.navigationController?.popViewController(animated: true)
  2. 두 번째 경우 사용한 경우 : self.present(yourViewController, animated: true, completion: nil)

    이 경우에 당신이 필요로 사용self.dismiss(animated: true, completion: nil)

첫 번째 경우 스토리 보드의 navigationController에 ViewController를 내장했는지 확인하십시오.


답변

당신이 제시하는 경우 UIViewController내에서 UIViewController즉 ..

// Main View Controller
self.present(otherViewController, animated: true)

간단히 dismiss함수를 호출하십시오 .

// Other View Controller
self.dismiss(animated: true)


답변

스위프트 5 이상

사례 1 : 내비게이션 컨트롤러와 함께 사용

self.navigationController?.popViewController(animated: true)

사례 2 : 현재보기 컨트롤러와 함께 사용

self.dismiss(animated: true, completion: nil)


답변

Segue가 ‘Show’또는 ‘Push’종류이면 UINavigationController의 인스턴스에서 “popViewController (animated : Bool)”을 호출 할 수 있습니다. 또는 segue가 “present”인 경우 UIViewController의 인스턴스로 “dismiss (animated : Bool, complete : (()-> Void)?)”를 호출하십시오.