2016-05-09 7 views
0

Ich baue gerade eine Klasse, um meine Datenbank und JSON-Anfrage korrekt zu verwalten. Das Problem ist jetzt, wie kann ich den Übergang durchführen?Ist es möglich, einen performSegueWithIdentifier von einer anderen Klasse aufzurufen?

Hier ist mein Code Aus meiner Sicht:

- (IBAction)loginClick:(id)sender 
{ 
    NSString *post = [NSString stringWithFormat:@"username=test&password=test"]; 
    [[DataManagement sharedManager] WebServiceLogin:post]; 
} 
- (void) showTypeView 
{ 
    [self performSegueWithIdentifier:@"showTypeView" sender:nil]; 
} 

In meiner Klasse:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
    { 
... 
       switch ([[response valueForKey:@"success"] intValue]) 
       { 
        case 0: 
        { 
         NSLog(@"error: %@ error Description: %@", [response valueForKey:@"success"], [response valueForKey:@"error_message"]); 
         break; 
        } 
        case 1: 
        { 
         LoginViewController *showView = [LoginViewController new]; 
         [showView showTypeView]; 
         break; 
        } 
        default: 
         break; 
       } 
... 
    } 

Wenn ich starten, ich habe einen Fehler: **

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<LoginViewController: 0x165afd30>) has no segue with identifier 'showTypeView'' 
*** First throw call stack: 
(0x2592e2eb 0x250fadff 0x29e2b037 0xe1819 0xdb64f 0x25f64de1 0x25f64d99 0x25f64e8d 0x25e261ef 0x25edf04f 0xa77cab 0xa7f835 0x25e171e3 0x258415f9 0x25e170cb 0x25e16f95 0x25e16e29 0x258f1257 0x258f0e47 0x258ef1af 0x25841bb9 0x258419ad 0x26abbaf9 0x29b2dfb5 0xe3ea9 0x254f4873) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

**

+1

Sie können eine (benutzerdefinierte) Delegat verwenden (in 'LoginViewController') die übergeordnete Klasse zu sagen, dass es braucht, um Führe den Übergang durch. – Larme

+0

Wie kann ich das tun :) Ich bin ein Neuling. Ich suche das – Claudio

Antwort

1

Wenn Sie segueWithIdentifier verwenden, müssen Sie das Segment bereits im Storyboard erstellen und korrekt als "showTypeView" bezeichnen. Andernfalls sollten Sie einen Navigationscontroller verwenden, um einen Ansichtscontroller zu verschieben, oder verwenden Sie den selbstpräsentierendenViewController, um einen modalen Ansichtscontroller anzuzeigen.

EDIT: Gebäude weg von Larme Kommentar können Sie einen Delegaten wie folgt aufbauen:

// In your class.h file 
@property (weak, nonatomic)id<SegueDelegate> delegate; 

// In class.m file 
LoginViewController *showView = [LoginViewController new]; 
self.delegate = showView; 
[self.delegate segue]; 


// In LoginViewController.h 
@protocol SegueDelegate 
-(void)segue; 
@end 

@interface LoginViewController: UIViewController <SegueDelegate> 
-(void)segue; 
@end 

// In LoginViewController.m 
@implementation LoginViewController 
-(void)segue 
{ 
    [self performSegueWithIdentifier:@"showTypeView" sender:nil]; 
} 
@end 
+0

Das ist, was ich getan habe, aber es funktioniert nicht. Wenn ich die gleiche Funktion direkt im Viewcontroller verwende, funktioniert es. – Claudio