ios - 在加载 View 之前帮助使用 View Controller 方法

标签 ios

我有一个名为 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";

然后,在 debugViewControllerviewWillAppear 方法中:

- (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/

相关文章:

ios - 在 UITableView 滚动时在 MKMapView 上放置图钉,从特定屏幕位置的单元格获取坐标。制作引脚 "dance."

ios - Unwind segue 在 Swift 3 和 iOS 10 中不起作用

iOS MDM 配置文件无法锁定?

ios - 有关在 iOS 设备上部署应用程序进行 Beta 测试的任何指示

ios - 无法更改 UIBarButtonItem 的背景

ios - 如何使用 Swift 访问 Firebase 数据库中的一组键值?

ios - Xcode 6.1.1 在设备上运行缓慢 "Copying Swift standard libraries"

ios - 从扩展程序写入存储在 App Group 容器中的数据库

ios - 如何确保没有执行超时请求? ios

ios - 如何使用 afnetworking 2.0 的可达性在互联网消失后立即向用户显示消息