2012-08-25 3 views
5

버튼을 눌렀을 때 새로운 세그를 밀어 넣어야합니다. 그러나 나는 또한 segue가 밀리기 전에 방아쇠를 당길 필요가있는 행동이 첨부되어 있습니다.버튼 동작과 단절 동작을 분리하십시오

서로 분리하는 방법을 알려주시겠습니까? 어떤 도움을 주시면 감사하겠습니다.

답변

13

단추를 단추에 연결하는 대신 한보기 컨트롤러에서 다른보기 컨트롤러로 직접 연결하십시오. 의미있는 이름을 지어 라.

단추의 동작 방법에서 먼저 수행해야하는 작업을 수행 한 다음 이전에 선택한 의미있는 이름을 사용하여보기 컨트롤러의 performSegueWithIdentifier: 메서드를 사용하여 연속을 수행하십시오.

귀하의 의견에 따르면, 귀하의 segue에서 표시하려고하는 컨트롤러에 대한 속성을 설정하려는 것 같습니다. 이 경우 prepareForSegue:을 구현하고 segue.destinationViewController을 사용하여 곧 표시 될보기 컨트롤러에 대한 포인터를 가져와야합니다.

+0

도움 주셔서 감사합니다. 나는 당신이 말한 것을 해봤지만, 여전히 뷰가 먼저 푸시되고 액션이 수행됩니다. 여기 내가 사용 부호화 야 - code' '- (IBAction를는) searchButtonPressed (ID) 송신기 { 의 ViewController의 ViewController * = [ALLOC의 ViewController] initWithNibName "의 ViewController"번들 @ 닐]; viewController.query = [NSString stringWithFormat : @ "% @", search.text]; [자기 performSegueWithIdentifier : @ "검색"보낸 사람 : 자기]; [viewController release]; } 'code' –

+0

음, 작동하지 않습니다! segue가 수행 될 때, OS는 새로운 뷰 컨트롤러를 만들어서 코드에서 만든 뷰 컨트롤러는 아무 것도하지 않습니다. 'prepareForSegue :'에 그 속성을 설정해야하는 것처럼 보입니다. – jrturton

+0

나는 두 솔루션을 모두 구현했습니다. 상황이 조금은 괜찮은 것 같지만 이제 앱이 충돌합니다. 추가하려고 시도했습니다. - - (IBAction) searchButtonPressed : (id) 보낸 사람 { [self performSegueWithIdentifier : @ "search"보낸 사람 : 보낸 사람]; } - (무효) prepareForSegue (UIStoryboardSegue *) SEGUE 송신기 (ID) 송신기 { 경우 ([isEqualToString segue.identifier : @ "검색"]) { 의 ViewController의 ViewController * = [SEGUE destinationViewController]; viewController.query = [NSString stringWithFormat : @ "% @", search.text]; [viewController release]; } } –

관련 문제