0

보기간에 전환하는 데 문제가있어서 도움이 필요합니다. 이것은 다소 납득이되어 제발 저와 함께하시기 바랍니다.Objective-C보기간에 전환하는 동안의 문제

JobsNavController이라는 UINavigationController가 있습니다. JobsNavController의 첫 번째 뷰에는 JobsTableViewController [연결된 펜촉이 JobTableView.xib] 인 UITableViewController가 있습니다. UYavController 안에 Add UIButton을 추가하여 '새 작업 만들기'를 원합니다. 클릭하면 JobTableView.xib에서 JobCreateView.xib이라는 내 JobCreateViewController nib로 바뀌어야합니다. '추가'버튼이 UINavController 내에 있기 때문에 JobsNavController.h and .m 안에 IBAction 코드를 넣었습니다. 여기

JobsNavController.h

#import <UIKit/UIKit.h> 
@class JobCreateViewController, JobsTableViewController; 

@interface JobsNavController : UINavigationController { 
    IBOutlet UIButton *btnJobCreate; 
    IBOutlet JobCreateViewController *jobCreateViewController; 
     IBOutlet JobsTableViewController *jobsTableViewController; 
} 
-(IBAction)tellDelegateToFlip:(id)sender; 

@property (nonatomic, retain) UIButton *btnJobCreate; 
@property (nonatomic, retain) IBOutlet JobCreateViewController *jobCreateViewController; 
@property (nonatomic, retain) IBOutlet JobsTableViewController *jobsTableViewController; 

@end 

입니다 그리고 여기에 내가 어떤 빌드를받지 못했습니다 JobsNavController.m

#import "JobsNavController.h", "Time_Blogger1AppDelegate.h", "JobsTableViewController.h" 
@implementation JobsNavController 
@synthesize btnJobCreate, jobCreateViewController, jobsTableViewController; 
..... 
-(void)tellDelegateToFlip { 
    JobCreateViewController *jobAddView = [jobCreateViewController initWithNibName:@"JobCreateView" bundle:nil]; 

    [self setJobCreateViewController:jobAddView]; 
    [jobAddView release]; 

    UIViewController *transitionTo = jobCreateViewController; 

    //create view animation block 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.25]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES]; 
    [jobsTableViewController.view removeFromSuperview]; 
    [self.view insertSubview:transitionTo.view atIndex:0]; 
    [UIView commitAnimations]; 

    [transitionTo release]; 
} 

/컴파일 에러를 내하지만 시뮬레이터 내가 알리는 버튼을 클릭 예외가 발생합니다 :

2012-01-22 19:19:22.895 Time-Blogger1[4209:f803] 
-[JobsNavController tellDelegateToFlip:]: unrecognized selector sent to instance 0x6c85e80 2012-01-22 19:19:22.897 Time-Blogger1[4209:f803] 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 
'-[JobsNavController tellDelegateToFlip:]: unrecognized selector sent to instance 0x6c85e80' 
+0

나는 내가 할 수있는 생각 정확히 어디서/왜 충돌했는지 보여줍니다. –

+0

@Rickay는'tellDelegateToFlip'에 대한 모든 코드입니다. – sadmicrowave

+0

나는 메서드를 호출하거나 구현하지 않는 코드를 의미했습니다. –

답변

1

tellDelegateToFlip이 매개 변수없이이 작업을 수행하는지 확인하십시오. 이것이 충돌을 일으키는 원인입니다. 오류 보고서에서 알 수 있듯이 알 수없는 선택기 tellDelegateToFlip:이 인스턴스로 전송되고 있다고 표시됩니다. 콜론이 메소드 이름 다음에 오는 것을 주목하십시오. 즉, 메서드를 호출 할 때마다 개체가있는 메서드를 보냈습니다. performSelector:withObject:afterDelay:을 사용하는 경우 을 입력하지 마십시오. 콜론을 사용하십시오.

편집 :

대신 :

JobCreateViewController* transitionTo = jobCreateViewController; 

또는 당신은 가정 캐스팅 수있는의 UIViewController에서 JobCreateViewController 상속 :

UIViewController* transitionTo = jobCreateViewController; 

왜 그냥 사용하지 마십시오.

는 방법의
+0

위의 내 JobsNavController.h 코드 섹션에서 메서드 호출을 보여 줬지만 이제는'UIViewController * transitionTo = ...'줄에 경고가 표시됩니다. 진술 : "형식이 'JobCreateViewController *'인 표현식으로 'UIViewController *'를 초기화하는 호환되지 않는 포인터 유형" – sadmicrowave

+0

"UIViewController 유형으로 선언하는 이유가 불분명합니다. 왜 그냥'JobCreateViewController * '로 선언하지 않는가? –

+0

당신이 할 수있는 구문 줄 바꾸기를 제공 할 수 있습니까? – sadmicrowave

1

잘못된 구현 :

-(IBAction)tellDelegateToFlip:(id)sender; 

가 있어야한다 : 당신은 당신이`tellDelegateToFlip`를 호출하는 코드를 추가하는 경우

은 JobsNavController.m에
-(IBAction)tellDelegateToFlip:(id)sender { 
... 
}