Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将值从控制器传递到控制器_Ios_Objective C - Fatal编程技术网

Ios 将值从控制器传递到控制器

Ios 将值从控制器传递到控制器,ios,objective-c,Ios,Objective C,我正在构建我的第一个iOS应用程序,尝试学习iOS编码。但是,我需要将值xAuthToken从一个控制器传递到另一个控制器。我似乎无法让它工作。我在第一个控制器ViewController中初始化该值,但在settingscoontroller中需要它。我不断收到错误,它现在抛出的错误是:在类型为“ViewController”的对象上找不到属性“ViewController” 我做错了什么 ViewController.h #import <UIKit/UIKit.h> #impo

我正在构建我的第一个iOS应用程序,尝试学习iOS编码。但是,我需要将值
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);
}