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

在第二个 VC 中:

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

我无法将用户在第一个 VC 中输入的文本移动到第二个 VC。我尝试调试并初始化 theVCMover.rawUserInput,它确实接收 textView.text 并将其成功保存在第一个 VC 中,但随后它在移动到第二个 VC 时迷失了方向,并在那里显示为 (null)。我一夜之间尝试了很多不同的方法,每一种都有自己的死胡同……但是这个相当简单,所以我想在我未来的项目中使用它。

PS起初我太关心在按下第二个选项卡(第二个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

是范围问题吗?在分配了 theVCMover.hexOrBinIndex 之后,您还没有显示代码。大概这就是你显示第二个 VC 的地方(比如你推动它或其他东西)。否则当 textvewDidEndEditing 退出时,VCMover 将超出范围,并且您所做的更改将在实际加载视图时丢失。您可以 NSLog theVCMover 然后在 viewDidLoad 中使用 'self',这些应该是同一个对象。如果它们不是您加载的视图,则不是您初始化的视图

于 2013-03-27T03:24:45.907 回答