我有一个名为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
答案 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可以看出,视图控制器生命周期很复杂。所以我说除非你有充分的理由,否则最好不要偏离阻力最小的道路。这说有时最好的学习方法是通过实验。