如何从一个viewcontroller为另一个视图控制器中的NSString设置值

时间:2012-07-25 13:37:52

标签: iphone objective-c uistoryboard ios5.1

我正在使用Xcode 4.3.2& iOS 5.1模拟器,在我的项目中我使用两个View Controllers:testingViewController和detailView。我想在testingViewController中选择tableViewCell后,在detailView中设置NSString的值。

为此,我使用了以下代码:

  

testingViewController.h

testingViewController.h

  

testingViewController.m

testingViewController.m

  

detailView.h

detailView.h

  

detailView.m

detailView.m

我在控制台中获取wordNamewordMeaning的空值。

有人有解决方案吗?在此先感谢!

5 个答案:

答案 0 :(得分:3)

如果您在testingViewControllerdetailView之间有故事板,请在testingViewController的{​​{1}}方法中更改行

prepareForSegue:

detailView *dVw = [[detailView alloc] init]; 

另外,我建议您更改detailView *dVw = (detailView *)segue.destinationViewController; 文件中的

detailView.h

@property (nonatomic, assign) NSString *YOUR_STRING; 

答案 1 :(得分:1)

使用

[[segue destinationViewController] setWordMeaning:meaningString];
[[segue destinationViewController] setWordName:wordTapped];

问题是您正在创建detailView

的新对象

答案 2 :(得分:1)

我写了this来在类之间共享数据。我希望它对你有用。

答案 3 :(得分:0)

将NSStrings设置为保留属性,而不是分配。此外,当您更改其值时,请始终使用

self.property = ...;

为了保留发生。否则,它将被释放,您将获得空或访问权限。

答案 4 :(得分:0)

创建自定义初始化方法

declare in .h file 

    -(id)initWithWordName:(NSString*)myWordName andWordMeaning:(NSString*)myWordMeaning;

    and in .m file

    -(id)initWithWordName:(NSString*)myWordName andWordMeaning:(NSString*)myWordMeaning
    {
       self = [super init];
       if(self)
       {
         self.wordName = myWordName;
         self.wordMeaning = myWordMeaning;
       }
       return self;
    }

并且还应该复制NSString属性而不是assign,在detail.h文件中进行更改