Objective c 正在设置NSString,但从另一个类(iOS)调用时显示为空

Objective c 正在设置NSString,但从另一个类(iOS)调用时显示为空,objective-c,ios,xcode,nsstring,get,Objective C,Ios,Xcode,Nsstring,Get,我有一小段代码,它将类Username的NSString(strUsername)设置为在UITextField中键入的值,然后按下按钮。这很好: UsernameViewController.m #import <UIKit/UIKit.h> #import "Username.h" @interface UsernameViewController : UIViewController { Username *username;

我有一小段代码,它将类Username的NSString(strUsername)设置为在UITextField中键入的值,然后按下按钮。这很好: UsernameViewController.m

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

    @interface UsernameViewController : UIViewController
    {
        Username *username;
        __weak IBOutlet UITextField *test;
    }

    @property (nonatomic, retain)IBOutlet UITextField *txtUsername;
    @property (nonatomic, retain) IBOutlet UITextField *test;

    -(IBAction)setUsername;

    @end

#import "UsernameViewController.h"
#import "Username.h"

@implementation UsernameViewController

@synthesize test=_test;    
    - (void)viewDidLoad
        {
            [super viewDidLoad];
            username = [[Username alloc] init];
        }

        -(IBAction)setUsername
        {
            NSString *inputUsername = self.test.text;
            NSLog(@"inputUsername is: %@", inputUsername);

            username.strUsername = inputUsername;
            NSLog(@"the username.strUsername is now: %@", username.strUsername);
        }
#import <Foundation/Foundation.h>

@interface Username : NSObject
{
    NSString *strUsername;
}

@property (nonatomic, retain) NSString *strUsername;

@end

#import "Username.h"

@implementation Username

@synthesize strUsername;

-(id)init
{
    strUsername = [[NSString alloc] init];
    return self;   
}

@end
现在,当它点击此视图上的后退按钮时,它会将我返回到UITableViewController。然后,我执行下拉刷新操作,并使用以下方法调用该操作:

TestViewController.m(UITableViewController类型)

但是,这将NSLog输出显示为:

LocNews1[6699:707] ViewController username.strUsername is:
如您所见,该字符串已在UsernameViewController.m中设置,但当我尝试在TestViewController.m中调用该字符串时,该字符串似乎为空(NSLog中没有null,仅为空)

这可能是什么原因造成的

编辑:Username.h/m

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

    @interface UsernameViewController : UIViewController
    {
        Username *username;
        __weak IBOutlet UITextField *test;
    }

    @property (nonatomic, retain)IBOutlet UITextField *txtUsername;
    @property (nonatomic, retain) IBOutlet UITextField *test;

    -(IBAction)setUsername;

    @end

#import "UsernameViewController.h"
#import "Username.h"

@implementation UsernameViewController

@synthesize test=_test;    
    - (void)viewDidLoad
        {
            [super viewDidLoad];
            username = [[Username alloc] init];
        }

        -(IBAction)setUsername
        {
            NSString *inputUsername = self.test.text;
            NSLog(@"inputUsername is: %@", inputUsername);

            username.strUsername = inputUsername;
            NSLog(@"the username.strUsername is now: %@", username.strUsername);
        }
#import <Foundation/Foundation.h>

@interface Username : NSObject
{
    NSString *strUsername;
}

@property (nonatomic, retain) NSString *strUsername;

@end

#import "Username.h"

@implementation Username

@synthesize strUsername;

-(id)init
{
    strUsername = [[NSString alloc] init];
    return self;   
}

@end
#导入
@接口用户名:NSObject
{
NSString*strUsername;
}
@属性(非原子,保留)NSString*strUsername;
@结束
#导入“Username.h”
@实现用户名
@合成结构名称;
-(id)init
{
strUsername=[[NSString alloc]init];
回归自我;
}
@结束

注意:用户名在TestViewController.h和UsernameViewController.h中声明,比如:Username*Username

UsernameViewController实例中的
username
实例变量与TestViewController实例中的
username
实例变量完全无关。您需要将变量存储在两个控制器都知道的地方,或者如果希望两个控制器都有访问权限,则需要在它们之间传递变量。简单地使用两个同名变量不会以任何方式将它们连接起来。

UsernameViewController实例中的
用户名
实例变量与TestViewController实例中的
用户名
实例变量完全无关。您需要将变量存储在两个控制器都知道的地方,或者如果希望两个控制器都有访问权限,则需要在它们之间传递变量。仅仅拥有两个同名的变量并不能以任何方式将它们连接起来。

在哪里声明了
username
?它是一个实例变量吗?全局变量?代码已更新,以显示Username类及其声明,Username声明在哪里?它是一个实例变量吗?全局变量?已更新代码以显示Username类及其声明我已尝试使用TestViewController*TestViewController=[[TestViewController alloc]init]将值从UsernameViewController传递给父视图控制器(TestViewController)//self.test.text=[(testViewController*)self.navigationController.presentingViewController].text;testViewController.activeUsername=test.text。但是,当使用UINavController中的后退按钮返回TestViewController时,字符串
activeUsername
为空。我做错了什么?您在那里创建的TestViewController与实际控制视图的控制器不同。就像NSString的不同实例包含不同的文本一样,TestViewController的每个实例都是自己的对象,有自己的变量//self.test.text=[(testViewController*)self.navigationController.presentingViewController].text;testViewController.activeUsername=test.text。但是,当使用UINavController中的后退按钮返回TestViewController时,字符串
activeUsername
为空。我做错了什么?您在那里创建的TestViewController与实际控制视图的控制器不同。就像NSString的不同实例包含不同的文本一样,TestViewController的每个实例都是具有自己变量的对象。