在类之间传递NSString值

时间:2012-03-31 08:01:04

标签: iphone objective-c class nsstring

我一直在寻找一种解决方案,如何将值从一个类传递到另一个类。基本上我在一个Settings类中通过@property创建一个NSString,它以模态方式显示。然后我根据所选的设置将NSString设置为某个值,并且我希望将值显示在设置应该进行更改的类中。我还在第二个类中通过@property声明了一个字符串,我使用了代码

myController *controller = [[myController alloc] init];
secondClassString = controller.firstClassString

如果我NSLog字符串,它在第二个类中显示(null)... 任何想法如何让它传递价值?感谢

4 个答案:

答案 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

如果您需要更多帮助,请与我联系。

希望这有帮助。