我知道我最近问了一个与此问题略有相似的问题,但我在几个小时内提交了该项目,这是我唯一的错误。
在第一个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),但现在我所关心的只是成功移动那个血腥的字符串。永恒的谢谢!!
答案 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”,它们应该是同一个对象。如果它们不是您加载的视图不是您初始化的视图