我认为通过prepareSeque方法应该将textView中写入的内容传递给下一个视图。 之前我在seque方法中使用textField和textfield.text工作正常。但我无法使用textView。
我在.h文件中有一个NSString属性:@property(weak,nonatomic)NSString * textString; 我在.m文件中将它同义化:@synthesize textString = _textString;
在我的textViewDidEndEditing中,我可以看到(通过调试)文本视图中的文本被拾取并且textString已设置。
然而,当我想要在我的Seque方法中检索textString时,它不包含任何文本:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"go"]) {
ISecondViewController *vc = [segue destinationViewController];
vc.funnyString = self.textString;
}
如果我输入:self.textString = @“嗨嗨”;在Seque方法中,funnyString将与Hi Hi一起传递,以便该部分正常工作。
在这种情况下,我是否完全误解了NSString的“获取和设置”?
答案 0 :(得分:2)
您的问题是,您weak
使用textString
属性,因此当您的资源范围超出nil
方法时,textViewDidEndEditing
属性为nil
。
为什么呢?因为弱引用的原则是,只要您引用的对象不再存在,它就会被设置为theText
。这将是方法结束时不存在的“strong
”对象的情况。请改用{{1}}属性。