Objective c 正在设置NSString,但从另一个类(iOS)调用时显示为空
我有一小段代码,它将类Username的NSString(strUsername)设置为在UITextField中键入的值,然后按下按钮。这很好: UsernameViewController.mObjective 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;
#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的每个实例都是具有自己变量的对象。