2011-12-13 5 views
2

xcode 4에서 단일보기 프로젝트를 만들었습니다. 탐색 모음 항목 객체를 추가했습니다. 거기에 "완료"라는 탐색 모음 버튼을 추가했습니다. 모두 그가 그 Xcode 드래그 앤 드롭을 사용합니다. 그 버튼에 내가 아주 간단한 IBAction를은 "전송 행위"에iPhone 탐색 표시 줄 버튼 항목 (UIButtonBarItem)

- (IBAction) newContactDoneBtn:(id)sender 
{ 
    NSLog(@"INSIDE newContactDoneBtn"); 
} 

를 부착 내가 연결이이 newContactDoneBtn IBAction를 가진 완료 버튼을 클릭합니다. 여태까지는 그런대로 잘됐다. 컴파일하고 실행하면 메시지 로그가 표시됩니다.

이제는 완료 버튼에 모달 스토리 보드를 첨부합니다. 즉, 사용자가 완료 버튼을 클릭하면 다른보기 컨트롤러로 이동합니다 ... 내 맞춤 IBaction "newContactDoneBtn"이 호출되지 않고 보입니다. 새로운 스크린. 왜 그렇게 될까요?

모든 것을 시각화하는 쉬운 예는 iPhone 연락처 앱의 '완료'버튼입니다. 새 연락처 추가를 클릭하면 거기에 완료 버튼이 있고, 필드에 내용을 입력하고 완료되면 다른보기 컨트롤러로 이동하여 새 연락처를 주소록에 추가합니다.

어쩌면 UIBarButtonItem의 한계 일 수도 있습니다. 누군가 내가 놓친다면 아무에게 말해 줄 수 있습니까?

답변

1

버튼에 segue를 추가하면 적용한 모든 동작이 무시됩니다. 세그먼트를 설정 한 후에도 액션이 인터페이스 빌더에 계속 연결되어 있습니까?

왜 두 가지 일이 발생하기를 원하십니까? 이 (가) 일 때 동시에 수행 할 수있는 순서는 세그먼트와 동시에 수행 할 수 있습니까?

모달보기 컨트롤러를 호출하려는 경우 코드를 작성하지 않아도 segue를 연결하면됩니다. 보기 컨트롤러의 prepareForSegue: 메소드에서 필요한 것을 실행할 수 있습니다. 또는 동작 방식에서 모달 컨트롤러를 수동으로 표시 할 수도 있습니다.

+0

감사합니다. prepareForSegue : 사용자 정의 단추 IBAction에서 조치를 취해야했습니다. –

+0

답변이 도움이 되었다면, 빈 체크 표시를 클릭하여 동의라고 표시하십시오. 이렇게하면 다른 사람들이 당신이이 문제에 대한 도움을 더 이상 찾고 있지 않음을 알 수 있습니다. – jrturton

+0

Xcode 4.2와 iOS 5.0에서 똑같은 문제가 발생했습니다. UI 업데이트 (UIBarButtonItem을 클릭 할 때 IBAction에서 표시 애니메이션을 시작하기 위해)를해야하므로 prepareForSegue의 코드로 IBAction을 분리해야합니다. 그렇지 않으면 UI의 로딩 표시기를 표시 할 기회가없는 것으로 보입니다. 그리고 prepareForSegue가 다른 UI 뷰 컨트롤러로 전환하기 때문에 prepareForSegue보다 먼저 IBAction이 실행되기를 기대합니다. 그러나 버튼에 segue가 연결되어 있으면 IBAction이 실행되지 않습니다. 그리고 그것은 iOS 버그로 보입니다. – nybon