在加载视图之前帮助使用视图控制器方法

时间:2011-06-19 22:34:40

标签: ios

我有一个名为DebugViewController的UIViewController,它包含一个UITextView,以及一个名为debugPrint的公共方法,用于将NSString写入UITextView并显示它。

在打开UIViewController之前是否可以写入UITextView,这样当我打开它时,会显示先前写入其中的文本?

在我的父视图控制器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];

但是之前写的所有文字都缺失了。

请在视图控制器向用户显示之前告诉我如何使用视图控制器方法。

谢谢,

JustinP

1 个答案:

答案 0 :(得分:0)

你在做什么有点不标准。与此一样危险的是,如果你真的没有专家掌握你正在做的事情,你很快就会陷入困境。

如果您希望在之前设置,则向用户显示视图,那么最好的方法是在viewWillAppear方法中执行此操作。把它放在那里而不是viewDidLoad,因为view可能会加载一次,但会出现很多次。放置的位置取决于数据是否从外观变为外观。

因此,如果您的数据非常静态且不会更改,请使用viewDidLoad方法。

假设您将选择viewWillAppear选项,让我们通过在视图控制器中安装ivar来完成第一步:

NSString *myText;

在init之后设置:

debugViewController = [[DebugViewController alloc] initWithNibName:@"DebugView" bundle:nil];
debugViewController.myText = @"My text here";

然后,在debugViewController的{​​{1}}方法中:

viewWillAppear

View Controller Programming Guide for iOS可以看出,视图控制器生命周期很复杂。所以我说除非你有充分的理由,否则最好不要偏离阻力最小的道路。这说有时最好的学习方法是通过实验。