0

私は、prepareSeque メソッドを介して、textView に書かれているものを次のビューに渡す必要があるというビューを持っています。seque メソッドで textField と textfield.text を使用する前は、正常に機能していました。しかし、textView で動作させることはできません。

.h ファイルに NSString プロパティがあります。 @property (weak, nonatomic) NSString *textString; .m ファイルで合成します。

私の textViewDidEndEditing では、(デバッグを通じて) テキスト ビュー内のテキストが取得され、textString が設定されていることがわかります。

  • (void)textViewDidEndEditing:(UITextView *)textView { NSString *theText = textView.text; self.textString =theText; }

ただし、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 に答える