2012-08-01 2 views
2

메신저 앱을 만들고 현재보기 컨트롤러가 6 개 있습니다. 이제 텍스트 필드가 있습니다. 편집 할 때 뷰 컨트롤러 3에서 라벨을 편집해야합니다. viewcontroller6에 선언 된 콘센트를 어떻게 연결할 수 있습니까? .h보기 컨트롤러 3에서 뭔가 스토리 보드에? 나는 그 복잡함을 안다. 그러나 어떤 도움이 정말로 컸을 것이다! :) 내가 전에 이와 비슷한 질문에 대한 답변했습니다보기 컨트롤러에서 콘센트를 연결하는 방법은 무엇입니까?

답변

0

감사 :

예 : Delegates.

빠른 대답은 vc6의 콘센트를 IB에서 컨트롤 드래그 할 때와 같이 vc3의 콘센트에 실제로 "연결"할 수 없다는 것입니다. 당신이 원하는 것을 성취하는 가장 좋은 방법은 위임 된 패턴을 사용하는 것이다.

약간의 추가 작업이 필요하지만 매우 중요한 기술입니다.

+0

@ Yar 내 연결된 답변에는 스토리 보드를 대리인과 함께 사용하는 방법이 포함되어 있습니다. – Dustin

+0

@yar 네가 맞다. 나는 다른 질문들도 훌륭했기 때문에 전체 질문을 연결했다. – Dustin

1

스토리 보드에서 vc6의 콘센트를 vc3에 연결할 수 없습니다.

  1. 사용 위임 패턴 (더스틴 언급 한 바와 같이) VC6에서 VC3에 텍스트 필드 데이터를 전달하기 : VC6에서 VC3 데이터를 전달하는 방법에는 여러 가지가 있습니다. 그러나 뷰 컨트롤러가 vc3에서 vc4, vc5에서 vc6 순서로 연결되어 있다면이 방법을 사용하는 것이 지루할 수 있습니다.

  2. 공유 인스턴스 (싱글 톤)를 사용하십시오. here의 코드를 사용합니다. 나는 당신이 많은 데이터를 가지고 있다면이 방법을 추천 할 것이다.

  3. NSUserDefault를 사용하여 텍스트 필드 데이터를 기억하고 vc3에 레이블을 표시 할 때 [NSUserDefaults standardUserDefaults]를 사용하여 값을 다시 읽습니다. 주위를 지나칠 수있는 데이터가 거의 없다면 좋습니다. 이 방법의 또 다른 장점은 다음에 실행하기 위해이 데이터를 기억할 수 있으며 vc3의 텍스트 필드가 입력을 위해 사용자에게 표시되기 전에 vc3의 레이블을 올바르게 표시 할 수 있다는 것입니다.

+0

4. NSNotification 게시! –

1

우선 viewcontroller6에서 #import "viewcontroller3.h"가 필요합니다. 그런 다음 viewcontroller6.m에서 viewcontroller3 인스턴스를 생성 할 수 있습니다. 그런 다음 모든 viewcontroller3의 데이터에 액세스 할 수 있습니다. viewcontroller3.m의 해당 인스턴스에있는 데이터를 viewcontroller6.m에서 설정하고 viewcontroller3의 뷰로 푸시하면 데이터가 있어야합니다.

비록 그 라벨, 당신은 viewcontroller3.h에 NSString * stringText의 속성을 생성하고 viewcontroller3.m 파일에서 합성 한 다음 뷰 컨트롤러 6에서 그 문자열을 선언 된 콘센트 값으로 설정해야 할 수도 있습니다 viewcontroller6에서. 그리고 컨트롤러를 보려고 푸시 한 다음 3. controller3보기의 viewdidload()에서 label.text = stringText와 같은 작업을 수행하십시오.

이제 viewcontroller3의 레이블을 viewcontroller6에서 설정 한 stringText ..에 있던 것으로 업데이트해야합니다.

관련 문제