Iphone 如何从一个viewcontroller为另一个视图控制器中的NSString设置值
我使用的是Xcode 4.3.2和iOS 5.1模拟器,在我的项目中,我使用了两个视图控制器:testingViewController和detailView。在testingViewController中选择tableViewCell后,我想在detailView中为NSString设置值 为此,我使用了以下代码: testingViewController.h testingViewController.m detailView.h detailView.m 我在控制台中为Iphone 如何从一个viewcontroller为另一个视图控制器中的NSString设置值,iphone,objective-c,uistoryboard,ios5.1,Iphone,Objective C,Uistoryboard,Ios5.1,我使用的是Xcode 4.3.2和iOS 5.1模拟器,在我的项目中,我使用了两个视图控制器:testingViewController和detailView。在testingViewController中选择tableViewCell后,我想在detailView中为NSString设置值 为此,我使用了以下代码: testingViewController.h testingViewController.m detailView.h detailView.m 我在控制台中为wordN
wordName
和wordmeans
获取空值
有人有办法吗?提前谢谢 使用
[[segue destinationViewController] setWordMeaning:meaningString];
[[segue destinationViewController] setWordName:wordTapped];
问题是您正在创建detailView
使用的新对象
[[segue destinationViewController] setWordMeaning:meaningString];
[[segue destinationViewController] setWordName:wordTapped];
问题是您正在创建
detailView
的新对象,如果您在testingViewController
和detailView
之间有一个故事板段,那么在testingViewController
的Prepareforsgue:
方法中,您应该更改行
detailView *dVw = [[detailView alloc] init];
到
另外,我建议您在detailView.h
文件中更改
@property (nonatomic, assign) NSString *YOUR_STRING;
到
如果在
testingViewController
和detailView
之间有一个故事板序列,则在testingViewController
的prepareForSegue:
方法中,您应该更改行
detailView *dVw = [[detailView alloc] init];
到
另外,我建议您在detailView.h
文件中更改
@property (nonatomic, assign) NSString *YOUR_STRING;
到
将NSString设置为保留属性,而不是分配属性。此外,当您更改其值时,请始终使用
self.property = ...;
以便进行保留。否则,它将被释放,您将获得null或错误访问。将NSString设置为保留属性,而不是分配属性。此外,当您更改其值时,请始终使用
self.property = ...;
以便进行保留。否则,它将被释放,您将获得null或错误访问。创建自定义init方法
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属性应该是copy而不是assign,在detail.h文件中进行更改创建自定义init方法
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属性应该是copy而不是assign,在您的detail.h文件中进行更改我为在类之间共享数据而编写的。我希望它对您有用。我是为在类之间共享数据而写的。我希望它对您有用。是的,我已经按照您提到的那样做了,但它不再工作。控制台显示空值。Inder是正确的,这样它将创建新的DetailView对象谢谢您的答复。我还需要一个帮助,我的部署目标是iOS 3.0+,因此我可能不会使用此segue功能或任何其他代码来替换此功能,以便它在iOS 3.0+设备上工作。提前谢谢!检查此链接谢谢该链接“我帮了我很多。是的,我已经按照您提到的做了,但它不再工作控制台显示空值。Inder是正确的,这样它将创建新的DetailView对象谢谢您的答复。我还需要一个帮助,我的部署目标是iOS 3.0+,因此我可能不会使用此segue功能或任何其他代码来替换此功能,以便它在iOS 3.0+设备上工作。提前谢谢!检查此“谢谢”链接“我帮了我很多。我还需要一个帮助,我的部署目标是iOS 3.0+,因此我可能不会使用此segue功能或任何其他代码来替换此代码,以便它在iOS 3.0+设备上工作。提前谢谢!您不能针对使用
框架的iOS
的较低版本,也不能针对适用于较高版本iOS的API
我还需要一个帮助,我的部署目标是iOS 3.0+,因此我可能不会使用此segue功能或任何其他代码来替换此代码,以便它可以在iOS 3.0+设备上工作。提前谢谢!您不能针对较低版本的iOS
,它使用框架
或API
,后者可用于较高版本的iOS
请参见:请参见: