我一直在寻找一种解决方案,如何将值从一个类传递到另一个类。基本上我在一个Settings类中通过@property创建一个NSString,它以模态方式显示。然后我根据所选的设置将NSString设置为某个值,并且我希望将值显示在设置应该进行更改的类中。我还在第二个类中通过@property声明了一个字符串,我使用了代码
myController *controller = [[myController alloc] init];
secondClassString = controller.firstClassString
如果我NSLog字符串,它在第二个类中显示(null)... 任何想法如何让它传递价值?感谢
答案 0 :(得分:3)
假设您有两个视图控制器说 A &的乙强>
你的A.h
{
NSString *strData;
int cId;
}
@property (nonatomic, retain) NSString *strData;
@property (readwrite) int cId;
现在在你的A.m
@synthesize strData,cId;
你的B.h
@class A
{
A *aObj;
}
现在在你的B.m
#import "A.h"
- (void) viewDidLoad
{
aObj=[A alloc] init]; //alloc object of A
[aObj setCId:10]; //set value for cId
[aObj setStrData:@"Hello from B"]; //set value for strData
//do what ever
[aObj release]; //don't forget
}
希望这能帮到你!
答案 1 :(得分:2)
第一个视图控制器:
nsstring * firstString = @“你的字符串”; 将此字符串传递给第二个视图controllert将nsstring创建到第二个视图控制器中 在第二视图控制器
nsstring *sencondstring;
@property(nonatomic,retain)nsstring * sencondstring; @synthesize sencondstring;
现在回到第一个视图控制器创建第二个视图控制器的对象
firstviewcontroller *firstviewObj=[[firstviewcontroller alloc]init;
firstviewObj.sencondstring = firststring;要么 firstviewObj.sencondstring = [nsstring stringwithformat:@“%@”,firststring];
答案 2 :(得分:0)
也许这会对你有所帮助
在Firstclass.m文件中写这个
SecondView *ObjSecondView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
objSecondView.secondClassString=Firstclassstring;
[self.navigationController pushViewController:ObjSecondView animated:YES];
[ObjSecondView release];
在SecondView.h中
@property(nonatomic,retain)NSString *secondClassString;
//also synthesize this
然后在secondview的viewdidload方法
上打印-(void)viewDidLoad
{
NSLog(@"your string = %@",secondClassString);
}
答案 3 :(得分:-1)
让我们使用两个viewControllers的名称作为FirstViewController和SecondViewController。
现在假设您在单击按钮时从FirstViewController推送SecondViewController,然后您需要在按钮单击事件下编写此代码:
// In the FirstViewController
- (void)buttonClicked:(id)sender{
SecondViewController *second = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle: nil];
second.secString = firstString;
[self.navigationController pushViewController:second animated:YES];
[second release];
}
您需要在SecondViewController.h
文件中声明:
NSString *secString;
然后创建一个@property
@property (non atomic,strong) NSString *secString;
在SecondViewController.m
中,您需要@synthesize
secString
:
@synthesize secString;
因此,您还可以通过创建属性并合成它来为secString创建一个getter和setter。
现在您可以轻松访问secString
,并且可以在SecondViewController中的任何位置使用它。
只需检查Try并检查firstString的值是否传递给secString,在viewWillAppear:
的{{1}}上编写以下代码
SecondViewController
如果您需要更多帮助,请与我联系。
希望这有帮助。