2012-03-04 6 views
1

내가 가지고있는 문제는 여러 개의 ViewController이 있는데 한 변수의 변수 ViewController에 또 다른 ViewController에 액세스하려고합니다. 이것은 아마도 매우 간단하게 해결할 수 있습니다 (그러나 이것을 이해할 수는 없습니다). UITextFieldmyTextField이고 ViewController1 인 경우 어떻게 myTextField.text에서 ViewController2으로 액세스 할 수 있습니까?Objective-C의 다른 클래스에서 한 인스턴스의 변수에 액세스

두 번째 클래스에서 UIViewController을 인스턴스화하려고했지만 이미 인스턴스화 된 클래스가 아니라 클래스의 새로운 인스턴스화가 있기 때문에 작동하지 않습니다. 따라서 모든 변수에 적절한 값이 없습니다. .

미리 감사드립니다.

+1

하나의 액세스 권한을 사용하여 수행하려는 작업은 무엇입니까? 통지, 대표자 등과 같은 더 좋은 방법이있을 수 있습니다. 원하는 것을 설명하면 더 나은 대답을 줄 수 있습니다. – user1118321

답변

0

모든보기 컨트롤러에서 텍스트 필드에 액세스하는 간단한 방법입니다.

  • 이 그것을 프로그램의 수명에 singleton..i.e.only 하나 개의 인스턴스 확인 새로운 클래스 (NSObject의 하위 클래스)를 확인합니다.
  • 싱글 톤 클래스에 텍스트를 저장합니다.
  • 는 목표 - C에서

구글 싱글이에 대한 자세한 내용을 찾을 .. 다른 뷰 컨트롤러에서 싱글을 검색하고 텍스트를로드합니다.

1

무엇을하려고하든 거의 틀림없이 틀립니다. 최소한 이 아닌이 다른보기 내부에서 한보기의 비주얼에 액세스하려고해야한다는 규칙에 어긋납니다.

당신은 오히려 직접 UITextField에 액세스하는 것보다, 모델을 통해 당신이 무엇이든간에 당신의 모델 클래스로 공유하려는 UITextField에서 데이터 및 액세스 데이터를 입력해야합니다.

+0

모델 클래스 란 무엇입니까? –

+0

@ user1226490보기와 관계없이 데이터를 유지하는 데 사용하는 개체입니다. [this MVC] (https://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html#//apple_ref/doc/uid/TP40008195-CH32) 가이드를 읽어보십시오. 모델 - 뷰 - 컨트롤러 패턴에 관한 정보. – dasblinkenlight

0

가장 쉬운 방법은 클래스에서 또는 첫 번째보기 컨트롤러에서 인스턴스 변수로 액세스하려고 시도하는 변수를 반환하는 정적 메서드를 만드는 것입니다.

먼저보기 컨트롤러

+ (NSString*) returnSomestring{ 
    return myVariable; 
    //myVariable can be replaced with textView.text or whatever you need it to be. 
} 

두 번째보기 컨트롤러

#import "FirstViewController.h" 

- (void) doSomething{ 
    NSString* var = [FirstViewController returnSomestring]; 
    //Code 
} 

문제 해결!

+0

하지만 내 생각에이 아이디어는 'myVariable'이 모든 인스턴스에 대해 동일하지 않으므로 클래스 자체가 리턴 인스턴스 (하나의 할당 인스턴스가 있더라도)를 알지 못하고, 오류가 있습니까? –

관련 문제