iOS 6에서 UIStoryboardSegue
이 전환을 완료했을 때를 알 수 있습니까? 예를 들어, UIStoryboardSegue
을 UIButton
에서 추가하여 내비게이션 컨트롤러에서 다른 UIViewController
을 푸시하면 푸시 전환이 완료된 직후에 뭔가를 원합니다.segue가 완료된 후 일부 코드를 실행하는 방법은 무엇입니까?
답변
당신은 UINavigationControllerDelegate
프로토콜을 사용하고 정의 할 수 있습니다 그래서 당신은 대상 컨트롤러의 방법을 쓸 수 있으며, 여기에 전화 도시 된 바와 같이, 단락의 완료에 대한 정보를 얻기 위해 위임자. segues를 추적하기위한 또 다른 논리적 인 장소는 AppDelegate
일 수 있습니다. 뷰 컨트롤러에서 그 일의
예
(줄여서 VC) :class MyViewControllerSubclass : UIViewController, UINavigationControllerDelegate {
func viewDidLoad() {
self.navigationController.delegate = self
}
func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) {
println("Did show VC: \(viewController)")
}
}
하지만 VC에 SEGUE이 완료 될 경우에만이 방법을 보여줍니다 것으로, 와 VC에있는 것 viewWillAppear()
또는 viewDidAppear()
위임 방법 제시되고있다. 그러나 그들은 목표 VC가 인 때를 알려주지 않고이 표시됩니다.
추적중인 VC에서 다음을 추가하여 VC (및 해당 메모리)가 할당 해제 된 경우를 감지하거나 viewWillDisappear()
메소드를 무시할 수 있습니다.
deinit {
println(__FUNCTION__, "\(self)")
}
viewDidAppear:
메서드를 사용하지 않으려는 경우 사용자 지정 단락을 만들 수 있습니다. perform
메서드에서 전환을위한 애니메이션을 사용하면 완료 블록을 가질 수 있습니다. 애니메이션이 완료되면 코드를 추가 할 수 있습니다.
Storyboard의 표준 끌어서 놓기 단절 기능으로는 불가능합니다. – hakonbogen
당신이 그것을 만드는 방법이지만'UIStoryboardSegue'를 서브 클래스 화하고'perform' 메소드를 구현해야합니다. 그 후,'storyboard'에서 여러분은 방금 만든 클래스로 segue의 클래스를 설정합니다. – Levi
당신은 사용할 수 있습니다 - (무효) prepareForSegue : (UIStoryboardSegue *) SEGUE 보낸 사람 : (ID) 보낸 사람을
거랑은 소스의 UIViewController에서 수행되는 직전에 불려됩니다. 대상 UIViewController에서 일부 코드를 수행하려는 경우 segue의 대상 viewcontroller를 얻을 수 있습니다.
또한이 코드를 desintation viewController의 viewdidAppearear에 추가 할 수 있습니다.
prepareForSegue 메서드에서 대상 UIViewController 메서드를 호출 할 수 있습니다.
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"prepareForSegue: %@", segue.identifier);
if ([segue.identifier isEqualToString:@"Happy"]) {
[segue.destinationViewController setHappiness:100];
} else if ([segue.identifier isEqualToString:@"Sad"]) {
[segue.destinationViewController setHappiness:0];
}
}
여기의 설정은 대상 컨트롤러의 것이며 여기는 100 개가 있습니다.
– navigationController:didShowViewController:animated:
실제 segue가 완료되면 실제로 그 사실을 나타내지 않습니다 .- 이것은 segue의 시작 부분에서 발생합니다. – Sam
을 스위프트에서는 UIViewController
서브 클래스에서 당신이 UINavigationController
인스턴스를 얻을 수 있고, 설정 :
- 1. segue가 완료된 후 데이터를 다시로드하십시오.
- 2. 마지막 게시물이 완료된 후 코드를 실행하는 방법은 무엇입니까?
- 3. 응답을 보낸 후 코드를 실행하는 방법은 무엇입니까?
- 4. 특정 스레드가 작업을 마친 후 일부 코드를 실행하는 방법은 무엇입니까?
- 5. NGRX로 상태를 변경 한 후 일부 코드를 실행하는 방법은 무엇입니까?
- 6. Angular.js에서 다운로드가 완료된 후 일부 작업 수행
- 7. 파일을 만든 후 코드를 실행하는 방법은 무엇입니까?
- 8. Django에서 인증 후 코드를 실행하는 방법은 무엇입니까?
- 9. 다른 작업이 완료된 후 ajaxcall을 실행하는 방법은 무엇입니까?
- 10. jQuery 애니메이션이 완료된 후 .click()을 실행하는 방법은 무엇입니까?
- 11. QT에서 .pro에서 컴파일이 완료된 후 쉘 명령을 실행하는 방법은 무엇입니까?
- 12. 앱 초기화가 완료된 후 어떻게 코드를 실행합니까?
- 13. UIView 사용자 지정 그리기 코드가 완료된 후 일부 코드를 실행하는 방법?
- 14. 스레드가 완료된 후 일부 작업 실행
- 15. 여러 이벤트가 완료된 후 코드를 실행하십시오.
- 16. Android에서 활동 생성 후 코드를 실행하는 방법은 무엇입니까?
- 17. python을 사용하여 파일을 수정할 때 일부 코드를 실행하는 방법은 무엇입니까?
- 18. PhoneGap/Cordova에서 개발하는 동안 일부 원시 코드를 실행하는 방법은 무엇입니까?
- 19. 매 x 초 후에 Unity3D에서 일부 코드를 실행하는 방법은 무엇입니까?
- 20. dispatch_after_seconds가 완료된 후 메소드를 호출하는 방법은 무엇입니까?
- 21. 루프 문이 완료된 후 루프하는 방법은 무엇입니까?
- 22. 일부 라인 편집이 완료된 후 푸시 버튼을 활성화하십시오.
- 23. 이전 스크립트가 완료된 후 jQuery 코드를 실행하십시오.
- 24. 일부 conds가 확인되고 일부 작업이 완료된 후 내부 루프에서 외부 루프로 컨트롤을 전송하는 방법은 무엇입니까?
- 25. 팔레트의 초기화 코드를 실행하는 방법은 무엇입니까?
- 26. Javascript에서 코드를 순서대로 실행하는 방법은 무엇입니까?
- 27. UIView transitionWithView 후 코드를 실행하는 방법?
- 28. SPROC 실행이 완료된 후에 트리거를 실행하는 방법은 무엇입니까?
- 29. "클릭"블록이 처리 된 후 코드를 실행하는 방법은 무엇입니까?
- 30. 반응 테이블이 렌더링 된 후 코드를 실행하는 방법은 무엇입니까?
예상했던 것만 큼 나쁘지 않았습니다. 'self.navigationController = self;'그리고 그 메소드를 추가하십시오. Segue ID를 기반으로 컨트롤러를 로컬 변수에 저장 한 다음 전달 된 'ViewController'와 비교합니다. –
이것은 출발 뷰 컨트롤러가 내비게이션 컨트롤러를 가지고 있지만 모달 섹터의 경우 어떻게 할 것인가? – Drux
나는 레위에서 사용자 지정 SEGUE 응답을 사용하고 여기에 예처럼 내'perform'을 구현 : http://stackoverflow.com/a/23778394/586489이 내가 푸시가 완료 될 때 알고 segues을 사용할 수 있습니다, 아주 잘 작동합니다. –