0

我认为通过 prepareSeque 方法应该将 textView 中写入的任何内容传递给下一个视图。在我在 seque 方法中使用 textField 和 textfield.text 之前工作正常。但我无法让它与 textView 一起使用。

我在 .h 文件中有一个 NSString 属性:@property (weak, nonatomic) NSString *textString; 我在 .m 文件中合成它:@synthesize textString =_textString;

在我的 textViewDidEndEditing 中,我可以看到(通过调试)文本视图中的文本已被拾取并且 textString 已设置。

  • (void)textViewDidEndEditing:(UITextView *)textView { NSString *theText = textView.text; self.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 =@"Hi Hi"; 在 Seque 方法中,funnyString 将与 Hi Hi 一起传递,以便该部分正常工作。

在这种情况下,我是否完全误解了 NSString 的“获取和设置”?

4

1 回答 1

2

你的问题是你一直在使用一个weak属性,textString所以nil当你的属性范围超出你的textViewDidEndEditing方法时。

为什么?因为弱引用的原理是只要nil你引用的对象不存在就会被设置为。这将是在theText您的方法结束时不存在的“”对象的情况。改为使用strong属性。

于 2012-12-29T01:01:29.203 回答