3 버튼이있는 UITabBarController
을 사용하는 응용 프로그램이 있습니다. 그래서 나는 또한 3 개의 수업을 가지고 있습니다. 내가하고 싶은 일은 클래스 2 (보기 2)의 버튼으로 클래스 1 (보기 1)의 - (IBAction) doSomething: (id) sender {}
으로 전화하는 것입니다. 그것은 당신의 doSomething
방법 (안 기능)을 수행하고 새로운 클래스에 메소드를 작성하는 데 사용하는 것이 무엇이든다른 클래스 (보기)의 단추가있는 클래스에서 함수 (IBAction) 호출
답변
가져 가라. 두 컨트롤러는 클래스를 가져 와서 인스턴스화하고 메서드를 사용할 수 있습니다.
대체로 컨트롤러에 doSomething
이있는 경우 알림을 보낼 수 있지만이 방법의 코드가 실제로 두 컨트롤러에 모두 적용되는 경우 두 컨트롤러에 모두 제공하십시오.
한 컨트롤러에서 다른 컨트롤러로 알림을 보낼 수 있습니다. 당신이 버튼을 누르면 코드를 수행하기 위해 클래스 1을 통지 할 때이 같은 통지를 보내드립니다 :
[[NSNotificationCenter defaultCenter] postNotificationName:@"ABCPerformButtonAction"
object:nil];
당신은 그것을 호출 할 ABCPerformButtonAction이없는, 당신은 단지 당신이거야 문자열이 필요합니다 인식하고있는 것 - 당신의 이니셜이나 앱의 이름 등을 알지 못하기 때문에 ABC를 사용했습니다. 알지 못하는 어떤 알림과 같은 이름의 알림을 우연히 보내지 않도록하기 위해 of) (예 : 사용중인 타사 라이브러리 포함).
알림이 사라지면 @ "ABCPerformButtonAction"을 수신 대기하도록 defaultCenter에 등록 된 모든 개체가 사용자가 선택한 모든 작업을 수행합니다. 여기에 1 레지스터 (이가있는 viewDidLoad 같은 일부 장소 또는 개체의 초기화 방법에 있어야합니다) 방식 컨트롤러 :
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(performDoSomething:)
name:@"ABCPerformButtonAction"
object:nil];
가 선택기, performDoSomething :, 당신이 때 실행하려는 방법의 단지 이름입니다 알림이 사라집니다. 이 메서드는 특정 형식을 가져야하므로 doSomething 메서드를 직접 호출 할 수 없습니다.
- (void)performDoSomething:(NSNotification *)notif {
[self doSomething];
}
위에서 볼 수있는 것처럼이 방법은 메서드를 호출하는 것입니다. 분명히 훨씬 더 많은 작업을 수행 할 수 있으며 알림과 함께 정보를 보낼 수도 있습니다 (아래 참조).
마지막으로 할당 해제되기 전에 개체를 옵저버로 제거하는 것이 중요합니다. 통지를 수신하기 위해 등록 된 각 객체의 Dealloc 메소드에서 다음을 추가하십시오.
[[NSNotificationCenter defaultCenter] removeObserver:self];
바라 건 말하면 의미가 있습니다. Apple documentation for NSNotificationCenter은 더 많은 것을 설명하며 알림을 사용하는 여러 가지 샘플 앱을 제공합니다.
- 1. 클래스 확장의 IBAction 메서드?
- 2. 다른 스레드에서 비 정적 클래스 함수 호출
- 3. 다른 ViewController 클래스에서 함수 호출하기
- 4. 다른 클래스에서 활동 호출 - Android
- 5. 다른 클래스에서 클래스 사용
- 6. Java 클래스에서 Java 클래스 호출
- 7. 클래스에서 컨트롤러의 함수 호출 (objective-c)
- 8. 타이머가있는 클래스 함수 호출
- 9. 중첩 클래스 - 부모 클래스에서 중첩 클래스 호출
- 10. 클래스 메서드 내에서 클래스 메서드 내에서 같은 함수 호출 호출
- 11. 다른 클래스에서 데이터베이스 클래스 자동로드?
- 12. Java (Groovy) 클래스에서 javascript 함수 호출
- 13. 하위 클래스의 수퍼 클래스에서 호출 함수
- 14. 클래스 내의 파이썬 호출 함수
- 15. 한 클래스에서 인스턴스화 된 객체의 함수를 다른 클래스에서 호출
- 16. 클래스에서 클래스 분할 및 메서드 호출
- 17. 함수 호출 대 python3에서 클래스 O를
- 18. 로컬 클래스 변수를 변경하는 방법 IBAction
- 19. 하위 클래스에서 함수 호출하기
- 20. Actionscript - 하위 클래스 생성자를 기본 클래스에서 호출
- 21. Actionscript : 하위 클래스에서 수퍼 클래스 메서드 호출
- 22. 다른 함수 내에서 VBA 함수 호출 문제
- 23. PHP 클래스 호출 외부 클래스
- 24. 클래스에서 메서드 호출
- 25. null 포인터 다른 클래스에서 문자열 [예외] 호출
- 26. Windows에서 다른 프로세스의 함수 호출
- 27. Jquery : 다른 문서의 함수 호출
- 28. 특수 템플릿 클래스 함수에서 특수 템플릿 클래스 함수 호출
- 29. 대표자와 IBAction
- 30. UIButton을 누르는 경우 다른 클래스의 함수 호출
방법 오른쪽 :). 그러나 조금 더 복잡합니다. 설명해 줄게. 두 번째 클래스에서 몇 가지 설정을 nsarray에 저장하고 plist에 저장하는 방법이 있습니다 (버튼을 클릭하면 모든 것이 발생합니다). 다시 두 번째보기에서 첫 번째보기로 전환 할 때 뭔가 직접하지 않고 해당 설정을 사용해야합니다. 그래서 두 번째 클래스의 메소드에 몇 가지 코드를 넣어 첫 번째 클래스에서 설정을 가져 오는 메소드를 호출하려고합니다. – user556541
좋아, 내가 원하는 것을 할 수있는 알림을 보내는 방법에 대한 설명을 추가했습니다. –
시도해 보셨습니까? –