처음 iPad 프로젝트에서 설정 한 방식대로 일반 메서드 호출이 내가 생각하는 방식으로 작동하지 않는 이유가 궁금했습니다.Button은 다른 클래스의 메서드를 호출하지만 일반 메서드 호출은 수행되지 않습니다
mainMenuAppDelegate *del = (mainMenuAppDelegate *)[[UIApplication sharedApplication] delegate];
그리고이 같은 버튼을합니다 :
나는이 같은 위임 포인터를 만들 initWithFrame 내부의 관점에서,
CGRect backBTNFrame = CGRectMake(25, 30, 140, 52);
backButton_video = [[UIButton alloc] init];
backButton_video.frame = backBTNFrame;
backBtnImg_video = [UIImage imageNamed:@"SHIP_button_back.png"];
[backButton_video setImage:backBtnImg_video forState:UIControlStateNormal];
backButton_video.backgroundColor = [UIColor clearColor];
[self addSubview:backButton_video];
[backButton_video addTarget:self
action:@selector(kill_timers)
forControlEvents:UIControlEventTouchUpInside];
[backButton_video addTarget:del.switchVC
action:@selector(gotoMain)
forControlEvents:UIControlEventTouchUpInside];
나는 버튼을 클릭 그것은에서 메소드를 호출 보기 컨트롤러 :
- (void)gotoMain{
NSLog(@"switch to main");
for(UIView *v in [containerView subviews]) {
[v removeFromSuperview];
}
MainMenu *mainMenu = [[MainMenu alloc] init];
mainMenu.frame = CGRectMake(0, -20, 1024, 768);
[containerView insertSubview:mainMenu atIndex:0];
[mainMenu release];
}
이것은 내가 본 화면을 없애고 기본 메뉴보기를 추가합니다. . 이것은 잘 작동합니다. 나는 그것이 전이었고, 자기 방식 kill_timers와 뷰 컨트롤러 방법 gotoMain를 호출하는 방법과 같은 위임 포인터를 만들 경우
그러나, 그것은 작동하지 않습니다
mainMenuAppDelegate *del = (mainMenuAppDelegate *)[[UIApplication sharedApplication] delegate];
[self kill_timers];
[del.switchVC gotoMain];
을 콘솔에서 나는 메시지가 표시 그 타이머를 죽이는데, 그렇지만 NSLog는 뷰 컨트롤러에서 작동 할 준비가되어 있지만 아무 것도 나타나지 않습니다. 그냥 일어나지 않습니다. 모든 단서? 왜 버튼과 정규 메소드 호출이 다르게 동작할까요?
감사합니다. 나는 당신이 오해했을 수도 있지만 대답은 여전히 적용될 수 있다고 생각합니다. kill_timers는 동일한 클래스 내에서 호출되어야합니다. 다른 클래스에서 호출해야하는 gotoMain입니다. 나는 내일에 도착해서 그것이 효과가 있는지 알려줄 수 있어야한다. – VagueExplanation
오 .. 남자 .. 오 남자 !!! 그것은 작동합니다. 그러나 약간 다른 방식으로. 필자는 실제로 뷰 컨트롤러에 추가 된 뷰 컨트롤러에서이 메서드를 호출하기를 원했습니다. 그래서 뷰 컨트롤러의 loadView에 알림 관찰자를 추가했습니다. 그런 다음 전화를보기에 넣습니다. 너무 굉장한 작품. A +++ – VagueExplanation