Ios 将值从控制器传递到控制器
我正在构建我的第一个iOS应用程序,尝试学习iOS编码。但是,我需要将值Ios 将值从控制器传递到控制器,ios,objective-c,Ios,Objective C,我正在构建我的第一个iOS应用程序,尝试学习iOS编码。但是,我需要将值xAuthToken从一个控制器传递到另一个控制器。我似乎无法让它工作。我在第一个控制器ViewController中初始化该值,但在settingscoontroller中需要它。我不断收到错误,它现在抛出的错误是:在类型为“ViewController”的对象上找不到属性“ViewController” 我做错了什么 ViewController.h #import <UIKit/UIKit.h> #impo
xAuthToken
从一个控制器传递到另一个控制器。我似乎无法让它工作。我在第一个控制器ViewController
中初始化该值,但在settingscoontroller
中需要它。我不断收到错误,它现在抛出的错误是:在类型为“ViewController”的对象上找不到属性“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
#import <Foundation/Foundation.h>
@interface SettingsController : UIViewController
@end
设置控制器.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
#import <Foundation/Foundation.h>
@interface SettingsController : UIViewController
@end
如果您有一个序列显示您的
设置控制器
,请在prepareforsgue
中传递它所需的信息。不要创建新的本地设置控制器
您可以执行以下操作
viewController = [self.storyboard instantiateviewcontrollerwithidentifier:@"your vc name"];
viewController.Xauthtoken = data;
// Do something else with this.
或者另一种方式(我不知道它是好是坏,在你的vc已经处于活动状态时使用它):
使用NSNotificationCenter并在其之间传递值
第三种方法是为第一个Viewcontroller创建委托。在您的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;
}
}
在你的设置中,控制器
#import <Foundation/Foundation.h>
@interface SettingsController : UIViewController
@property (nonatomic,strong) NSString *xAuthToken;
@end
您正试图为
self.viewController
分配一个值,但尚未为此提供属性定义。但我需要在SettingsView中向Web服务器发送一些帖子。如果没有专用的设置控制器
,这可能吗?假设这是您的segue创建的,您将拥有一个设置控制器。我只是说,不要在代码中创建不同的代码。我实现了您的代码,但现在它在这一行崩溃:\u xAuthToken=[jsonData[@“token”]stringValue]代码>现在我得到由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[UINavigationController setXAuthToken:]:未识别的选择器发送到实例0x79837530
@interface SettingsController ()
@property (weak, nonatomic) IBOutlet UITextField *myTextField;
@property (weak, nonatomic) IBOutlet UISwitch *mySwitch;
@end
@implementation SettingsController
-(void)viewDidLoad{
NSLog("%@",xAuthToken);
}