我有一个名为 DebugViewController 的 UIViewController,其中包含一个 UITextView,以及一个名为 debugPrint 的公共(public)方法,该方法用于将 NSString 写入 UITextView 并显示它。
是否可以在打开 UIViewController 之前写入 UITextView,以便在打开它时显示之前写入的文本?
在我的父 View Controller viewDidLoad 方法中,我在 DebugViewController 上调用 initWithNibName,如下所示
debugViewController = [[DebugViewController alloc] initWithNibName:@"DebugView" bundle:nil];
然后我按如下方式调用 debugPrint
[debugViewController debugPrint:@"viewDidLoad"];
一段时间后,我调用以下命令打开 debugViewController
debugViewController.delegate = self;
debugViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:debugViewController animated:YES];
但是之前写的所有文本都丢失了。
请告诉我如何在向用户显示 View Controller 之前使用 View Controller 方法。
谢谢,
贾斯汀
最佳答案
你做的有点不标准。与往常一样,这样做的危险在于,如果您对自己正在做的事情没有真正的专家把握,您很快就会发现自己陷入困境。
如果您希望在 View 显示给用户之前设置一些东西,那么最好的方法是在viewWillAppear
方法中进行。将它放在那里而不是放在 viewDidLoad
中,因为 view
可能加载一次但出现多次。您将其放置在何处取决于数据是否会随着外观的变化而变化。
因此,如果您的数据非常静态且不会更改,请使用 viewDidLoad
方法。
假设您将选择 viewWillAppear
选项,让我们通过在 View Controller 中添加一个 ivar 来完成第一步:
NSString *myText;
在初始化之后设置:
debugViewController = [[DebugViewController alloc] initWithNibName:@"DebugView" bundle:nil];
debugViewController.myText = @"My text here";
然后,在 debugViewController
的 viewWillAppear
方法中:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
myTextView.text = myText;
}
View Controller 生命周期很复杂,您可以从 View Controller Programming Guide for iOS 中看到.所以我会说最好不要偏离阻力最小的路径,除非你有充分的理由。也就是说,有时最好的学习方法是通过实验。
关于ios - 在加载 View 之前帮助使用 View Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6405501/