所以我有两个场景......第一个有2个输入文本字段。在进入下一个场景之前,我将信息输入第一个字段。下一个场景生成我需要在第一个场景中使用的信息,以便在第二个文本字段中输入。每次我回到第一个场景时,第一个信息串被清除。我不能简单地使用后退按钮,我需要使用prepareforsegue,所以我很好奇,如果有任何方法在场景1中输入我的文本信息,segue到场景2(生成其他信息)并切换回场景1而不会丢失先前的信息输入
我希望这是足够的信息。提前致谢。
EDITED
以下是我的一些代码。
inputMilesViewController.h(FIRST VIEW)
@property (weak, nonatomic)IBOutlet UIButton *myTodayButton;
(myTodayButton代表dvc - 在segue之前myTodayButton.titleLabel.text等于“TODAY”)
dvc.m(第二视图)
- (IBAction)myNewSelectDate:(id)sender {
inputMilesViewController *classInstance = [[inputMilesViewController alloc] init];
[classInstance changeButtonText:[_myNewDatePicker date]];
[self dismissViewControllerAnimated:YES completion:nil];
}
inputMilesViewController.m(FIRST VIEW)
-(void) changeButtonText:(NSDate*) dateForInput{
NSLog(@"The button is titled %@", self.myTodayButton.titleLabel.text);
NSDate *now = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEE, MMM d,''yy"];
NSString *formattedDateString = [formatter stringFromDate:dateForInput];
... ... (这里我尝试将按钮的文本更改为formattedDateString,但是NSLog指示按钮文本现在是(null)。
答案 0 :(得分:1)
NEW EDIT
在inputMilesViewController.m
// At the top with the other #imports
#import "dvc.h"
我也建议在进入iOS之前学习面向对象。它是它的关键部分。它并不难,但绝对是本质的。
将此代码添加到您的项目中。
在inputMilesViewController.m
添加
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
[segue.destinationViewController setClassInstance];
}
在dvc.h
中添加:
@property (weak, nonatomic) inputMilesViewController *classInstance;
在dvc.m
中添加:
@synthesize classInstance = _classInstance;
- (IBAction)myNewSelectDate:(id)sender {
// Removed this line
//inputMilesViewController *classInstance = [[inputMilesViewController alloc] init];
[self.classInstance changeButtonText:[self.myNewDatePicker date]];
[self dismissViewControllerAnimated:YES completion:nil];
}
正如我在评论中所说,这段代码的作用是将你的字符串提供给原始的fisrtViewController,而不是你刚刚创建的新字符串。为此,您需要创建属性classInstance
并使其成为对原始viewController的引用。
快速提示:让您的类名以大写字母开头,以便您可以将它们与变量区分开来。因此,在这种情况下:InputMilesViewController
和Dvc
。
在我看来,你对面向对象编程并不是很熟悉。我建议您尝试了解更多有关MVC模型的信息。两者都是iOS编程的关键部分。
如果它仍然无法告诉我。
希望它有所帮助。
答案 1 :(得分:1)
我同意佩德罗斯。听起来你做错了。您可能正在使用segue从vc1到vc2,然后使用另一个segue从vc2到vc1 - 这是错误的!这是错误的,因为真正的segue会创建一个新的视图控制器实例。所以你不会回到你之前离开的同一个vc1;相反,你正在制作一个全新的vc1并继续这样做!这就是田地空虚的原因;它是一个全新的清洁视图控制器。
相反,你要做的是做一个真正的segue out和一个“退出”(或“放松”)segue回来。这是一个新的iOS 6功能。我在这里有一些例子:
https://github.com/mattneub/Programming-iOS-Book-Examples
特别是,看看名称以“ch19p560”和“ch19p561”开头的四个例子。这些节目展示了如何在你发现时将信息从vc1传递到vc2,然后展示如何在退出时将信息从vc2传回到同一个vc1实例。它们说明了不同程度的展开(例如,跳回几个视图控制器)以及各种情况。