2011-11-10 9 views
0

사용자를 클릭하면 강제로 암호를 입력 할 수있는 분할 컨트롤이 있습니다.대리자 메서드에서 segue 수행

성공적으로 확인한 후 모달 화면이 닫히고 분할 된 컨트롤이있는 컨트롤러에서 메소드가 호출되고 다른 컨트롤러에 세그먼트가 수행되어야합니다.

segue 자체는 작동하지만 로그인 확인 후 작동하지 않습니다. 나는 ... 이것이 "자기"의 문제라고 생각 위임 클래스의

코드 :

@protocol LoginUserControllerDelegate 
    - (void)proceedAfterLogin:(BOOL)proceedToNextController; 
@end 

@interface LoginUserController : UIViewController { 
    IBOutlet UITextField *loginPWD; 
    id<LoginUserControllerDelegate> _delegate; 

} 

@property (nonatomic, retain) UITextField *loginPWD; 
@property (nonatomic, assign) id<LoginUserControllerDelegate> delegate; 

- (void)checkLogindata; // checks for correct password 
@end 

@implementation LoginUserController 

@synthesize loginPWD; 
@synthesize delegate = _delegate; 

- (void)checkLogindata { 
    ... 
    if ([tempDBPWD isEqualToString:tempLoginPWD]) { 
     if (_delegate != nil) { 
       [self dismissModalViewControllerAnimated:YES]; 
       [_delegate proceedAfterLogin:YES]; 
      } 

    } 
    ... 
} 

@end 

방법에 분할 된 컨트롤러 :

@interface StartViewController : UIViewController <LoginUserControllerDelegate> { 
    UISegmentedControl *segmentedControl; 
    LoginUserController *_loginUserController; 
} 

@property (nonatomic,retain) IBOutlet UISegmentedControl *segmentedControl; 
@property (nonatomic, retain) LoginUserController *loginUserController; 

- (IBAction)segmentedControlIndexChanged:(id)sender; 
@end 


@implementation StartViewController 

@synthesize segmentedControl; 
@synthesize loginUserController = _loginUserController; 


- (IBAction)segmentedControlIndexChanged:(id)sender 
{ 
    if (self.segmentedControl.selectedSegmentIndex == 0) { 
     // get delegate 
     AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
     UIStoryboard *storyboard = appDelegate.window.rootViewController.storyboard; 
     LoginUserController *loginUserControllerView = [storyboard instantiateViewControllerWithIdentifier:@"LoginUserViewID"];  
     loginUserControllerView.delegate = self; 
     // now show screen 
     [self presentModalViewController:loginUserControllerView animated:YES]; 

    } else { 

    } 

} 

- (void)proceedAfterLogin:(BOOL)proceedToNextController 
{ 
    if (proceedToNextController) { 
     // yes, correct login now perform the segue to the controller 
     [[self segmentedControl] setSelectedSegmentIndex:UISegmentedControlNoSegment]; 
     [self performSegueWithIdentifier:@"NextControllerSegueID" sender:self]; 

    } 

} 

@end 

나는 생각 자체가 올바르지 않기 때문에 [self performSegueWithIdentifier:@"NextControllerSegueID" sender:self];이 문제입니다. 오류가 발생하는 곳이며 원하는 동작을 어떻게 얻을 수 있습니까?

답변

1

닫기가되었지만 위임자에게 돌아가서 dismissModalViewControllerAnimated : YES를 호출해야합니다. 모달 컨트롤러는 자신을 해고 할 수 없으므로 로그인을 수행하고 대리인에게 다시 호출해야하며 대리인이 모달 컨트롤러를 닫을 수 있어야합니다.

관련 문제