在VC不工作之间移动数据

时间:2013-03-27 03:12:27

标签: objective-c viewcontroller

我知道我最近问了一个与此问题略有相似的问题,但我在几个小时内提交了该项目,这是我唯一的错误。

在第一个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。我尝试调试并初始化了VCMover.rawUserInput,并且它接收了textView.text并将其成功保存在第一个VC中,但是在移动到第二个VC时它会丢失并在那里显示为(null)。我已经尝试了很多不同的方式,每个方面都有自己的死胡同......但是这个方法相当简单,所以我想在未来的项目中使用它。

P.S。起初我在第二个标签被按下后立即关注移动的字符串显示(第二个VC),但现在我所关心的只是成功移动那个血腥的字符串。永恒的谢谢!!

2 个答案:

答案 0 :(得分: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;
  .....
}

希望有所帮助。

答案 1 :(得分:0)

这是范围问题吗?您在theVCMover.hexOrBinIndex分配后没有显示代码。据推测,这就是你展示第二个VC的地方(就像你推动它一样)。否则,当textvewDidEndEditing退出时,VCMover将超出范围,并且在实际加载视图时,您所做的更改将会丢失。您可以在ViewDidLoad中使用NSLog theVCMover然后“self”,它们应该是同一个对象。如果它们不是您加载的视图不是您初始化的视图