내가 앱 위임에 지정 대리인을 추가하려고 해요, 그리고 난이 방법으로 그것을하고 있어요에 : 나는 다른 관점에서이 대리자를 사용하기 위해 노력하고있어 다음를 사용하여 사용자 정의 위임 AppDelegate에
AppDelegate.h
@protocol AppDelegateDelegate <NSObject>
- (void)finishSync:(BOOL)success;
@end
@interface AppDelegate : UIResponder <UIApplicationDelegate> {
@property (nonatomic, weak) id <AppDelegateDelegate> delegate;
@end
UITabViewController 연결, 그리고 난이 방법으로 그것을 수행
FirstView.h
#import "AppDelegate.h"
@interface FirstView : UIViewController <AppDelegateDelegate>
@end
FirstView.m
@implementation FirstView
...
- (void)viewDidLoad {
AppDelegate *appController = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appController.customDelegate = self;
}
가 FirstView 완벽하게 작동하지만, 예를 들어 내가 대리자를 구현하는 동일한 코드를 SecondViewController에서 전환하는 경우, 대리인이 작동하지 않는 이상 어느 쪽도 없다 FirstView에서 ... 내가 뭘 잘못 했니?
편집 : 내가 rdelmar 답변을 시도,하지만 지금은, 내가하는 UITabBarController가이보기 didfinishloading 방법에로드를 4보기가 더 나은 내 상황을 설명 해요, 작동하지 않는
당신이 당신의 대답처럼 애플 대리자에서, 다음 응용 프로그램 첫 번째보기에서 열려, 그리고이보기 viewDidAppear의 로그는 다음과 같습니다 다음
<FirstView: 0xae10280>
내가 두 번째보기로 전환이는 viewdidappear nslog의입니다 deleagate :
,210<SecondView: 0x9f79b10>
는 내가 thirdView의 전환이는 nslog입니다 :
<ThirdView: 0xba86200>
마지막은 FourthView입니다 :
<FourtView: 0xba875b0>
그럼, 모든 대리인이 모든보기에서 작동하는 것 같다 첫 번째보기로 전환하려고 시도했습니다. 로그는 다음과 같습니다.
(null)
나는 세 번째보기를 전환합니다. 0
(null)
두 번째 :
(null)
네 번째 :
(null)
가 어떤 작업을 더 이상, 그래서 내가 응용 프로그램을 중지하고 내가 다시 실행 한과 firstView 시작 :
<FirstView: 0xad28730>
D보기 다음 firstView에
<SecondView: 0x9f682e0>
창 :
(null)
스위치 번째 뷰 :
(null)
스위치 번째 뷰 : fourthView에
<ThirdView: 0xab297e0>
스위치 :
세 번째보기로 다시<FourthView: 0xab28430>
16,:
(null)
그래서 당신이 문제를 볼 수 그것은보기에 반환 대리자가 null의 경우 처음, 다음, 어떤 생각을 작동입니까?
편집 2 :
나는 내가있는 navigationController 사이에보기를 전환하는 경우 대리자가 결코 것 또한 통지가 (널), 대신 UITabBarController가에서보기를 전환 난 그래서 ... 널주고 난 내 코드처럼 그것은 내가 생각하는 UITabBarController 뷰의 문제입니다 ...
개체를 사용하면 한 번에 하나의 대리인 만 가질 수 있습니다. FirstView는 하나의 대리자 만 가질 수 있으며 AppDelegate는 한 번에 하나의 대리자 만 가질 수 있습니다. – Piero
AppDelegate. AppDelegate는 FirstView (FirstView가 대리자 임)가 아니라 위임자가 있어야합니다. – rdelmar
그래, 고마워,하지만 위임장 작성 = nil보기에서 사라질 것입니다. 헤더 파일에서 appController를 선언해야합니다. 아니면 이렇게 할 수 있습니다 : AppDelegate * appController = (AppDelegate *) [[UIApplication sharedApplication] delegate]; appController.customDelegate = nil; 보기에서 사라질 것인가? 최고는 뭐지? – Piero