2016-05-09 14 views
0

データベースとJSONリクエストを正しく管理するためのクラスを作成するだけです。問題は、今、どのようにセグを実行できますか?ここで別のクラスからperformSegueWithIdentifierを呼び出すことはできますか?

は、私の見解では私のコード です:私のクラスで

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

-(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; 
       } 
... 
    } 

私が起動すると、私はエラーを持っている:**

*** 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

あなたはそれが必要であることを親クラスを伝えるために(LoginViewController' '中)(カスタム)デリゲートを使用することができます。 ビルLarmeさんのコメントのオフ、あなたはこのようなデリゲートを構築することができますセグを実行します。 – Larme

+0

どうすればいいですか?私は初心者です。私はそれを探しています – Claudio

答えて

1

segueWithIdentifierを使用している場合は、すでにSegueをStoryboardに組み込み、正しく「showTypeView」というラベルを付けておく必要があります。それ以外の場合は、ナビゲーションコントローラを使用してビューコントローラをプッシュするか、self presentViewControllerを使用してモーダルビューコントローラを表示する必要があります。

EDIT:

// 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

これは私がやったことですが、うまくいきません。私がviewcontrollerで同じ関数を直接使うと、それは動作します。 – Claudio

関連する問題