2014-10-10 47 views
-1

我正在構建我的第一個iOS應用程序來嘗試和學習iOS編碼。但是,我需要從一個控制器向另一個傳遞值xAuthToken。我似乎無法得到它的工作。我初始化了第一個控制器ViewController中的值,但是我需要它在SettingsController中。我不斷收到錯誤,現在拋出的錯誤是:Property 'ViewController' not found on object of type 'ViewController'從控制器傳遞值到控制器

我在做什麼錯?

ViewController.h

#import <UIKit/UIKit.h> 
#import "SettingsController.h" 

@interface ViewController : UIViewController <UITextFieldDelegate> 
@property (weak, nonatomic) IBOutlet UITextField *txtUsername; 
@property (weak, nonatomic) IBOutlet UITextField *txtPassword; 

- (IBAction)sigininClicked:(id)sender; 

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

ViewController.m

#import "ViewController.h" 

@interface ViewController() 

@property (nonatomic) NSString *xAuthToken; 

@end 

@implementation ViewController 

- (IBAction)sigininClicked:(id)sender { 

    NSString *xAuthToken = @"0"; 

    self.viewController = [[SettingsController alloc] init]; 
    self.viewController.xAuthToken = xAuthToken; 
    [self performSegueWithIdentifier:@"login_success" sender:self]; 

} 

SettingsController.h

#import <Foundation/Foundation.h> 

@interface SettingsController : UIViewController 

@end 

SettingsController.m

@interface SettingsController() 

@property (weak, nonatomic) IBOutlet UITextField *myTextField; 
@property (weak, nonatomic) IBOutlet UISwitch *mySwitch; 

@end 

@implementation SettingsController 

//THIS IS WHERE I NEED XAUTHTOKEN 
+0

您正試圖分配一個值' self.viewController',但是你還沒有爲此提供屬性定義。 – 2014-10-10 18:08:59

回答

2

如果您有您呈現一個SettingsController賽格瑞,通過它在prepareForSegue需要的信息。不要創建新的本地SettingsController

+0

但我需要在設置視圖到Web服務器的一些職位。沒有專用的'SettingsController'可能嗎? – user4114789 2014-10-10 19:17:35

+0

您將擁有一個SettingsController,假設這是您的segue創建的。我的意思是,不要在代碼中創建不同的代碼。 – 2014-10-10 19:20:16

0

你可以做這樣的事情

viewController = [self.storyboard instantiateviewcontrollerwithidentifier:@"your vc name"]; 
viewController.Xauthtoken = data; 
// Do something else with this. 

或者另一種方式(我不知道這是否是好還是壞,使用它,而你的VC已經被激活): 使用NSNotificationCenter和它之間傳遞值。

第三種方法是爲第一個Viewcontroller創建委託。

0

在ViewController.m試試這個:

#import "ViewController.h" 

@interface ViewController() 

@property (nonatomic) NSString *xAuthToken; 

@end 

@implementation ViewController 

- (IBAction)sigininClicked:(id)sender { 
    xAuthToken = @"Your Value Here"; 
    [self performSegueWithIdentifier:@"login_success" sender:self]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"login_success"]) { 
     SettingsController *destViewController = segue.destinationViewController; 
     destViewController.xAuthToken = xAuthToken; 
    } 
} 

而在你SettingsController.h

#import <Foundation/Foundation.h> 

@interface SettingsController : UIViewController 

@property (nonatomic,strong) NSString *xAuthToken; 

@end 

SettingsController.m

@interface SettingsController() 

@property (weak, nonatomic) IBOutlet UITextField *myTextField; 
@property (weak, nonatomic) IBOutlet UISwitch *mySwitch; 

@end 

@implementation SettingsController 

-(void)viewDidLoad{ 
    NSLog("%@",xAuthToken); 
} 
+0

我實現了你的代碼,但現在它崩潰在這一行上:'_xAuthToken = [jsonData [@「token」] stringValue];' – user4114789 2014-10-10 19:51:04

+0

現在我得到'終止應用程序由於未捕獲的異常'NSInvalidArgumentException',原因:' - [UINavigationController setXAuthToken:]:發送到實例0x79837530的無法識別的選擇器 – user4114789 2014-10-10 20:28:38

相關問題