0

最近、これに少し似た質問をしたことは知っていますが、数時間でプロジェクトを提出します。これが私の唯一のバグです。

最初のVCでは:

- (void)textViewDidEndEditing:(UITextView *)textView {
SecondViewController *theVCMover = [[SecondViewController alloc] init]; //I imported the .h file

    theVCMover.rawUserInput = textView.text;
    //If I put an NSLog of theVCMover.rawUserInput here, it works and displays the string

    theVCMover.hexOrBinIndex = hexOrBin.selectedSegmentIndex; //same problem here

2番目のVC:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog (@"Bt-dubs, the moved text is %@", rawUserInput); //is (null) here
    CleanerText.text = rawUserInput; //CleanerText is a TextView
}

ユーザーが最初のVCに入力したテキストを2番目のVCに移動できません。デバッグを試みたところ、VCMover.rawUserInputが初期化され、textView.textを受信して​​、最初のVCに正常に保存されましたが、2番目のVCに移動すると失われ、そこで(null)として表示されます。私は一晩で非常に多くの異なる方法を試しましたが、それぞれに行き止まりがあります...しかし、これはかなり単純なので、将来のプロジェクトで使用したいと思います。

PS最初は、2番目のタブが押された直後(2番目のVC)に表示される移動された文字列を気にしすぎましたが、今はその血まみれの文字列を正常に移動するだけです。永遠の感謝!!

4

2 に答える 2

1

タブバーにすでに存在するビューコントローラにテキストをプッシュする場合は、そのtextViewDidEndEditingメソッドで新しいテキストを初期化しないでください。タブバーにすでにあるVCのテキストを変更する必要があります。

// Not nice code because it uses magic numbers and fixed locations of view
// controllers in the tab bar
- (void)textViewDidEndEditing:(UITextView *)textView {
  // Assumes the SecondViewController is the second tab on the tab bar controller
  SecondViewController *theVCMover = [self.tabBarController.viewControllers objectAtIndex:1]; 

  theVCMover.rawUserInput = textView.text;
  theVCMover.hexOrBinIndex = hexOrBin.selectedSegmentIndex;
  .....
}

お役に立てば幸いです。

于 2013-03-27T03:32:18.173 に答える
0

スコープの問題ですか?VCMover.hexOrBinIndexの割り当て後にコードを表示していません。おそらくそれはあなたが2番目のVCを表示する場所です(あなたがそれを押すか何かのように)。そうしないと、textvewDidEndEditingが終了すると、VCMoverがスコープ外になり、ビューが実際にロードされたときに行った変更が失われます。VCMoverをNSLogしてから、viewDidLoadで「self」を実行できます。これらは同じオブジェクトである必要があります。それらがロードしたビューでない場合は、初期化したビューではありません

于 2013-03-27T03:24:45.907 に答える