当应用程序完成启动时,我尝试从AppDelegate设置UITextView。 实际上我只想打开一个文件并将其内容传递给UITextView。
在我的ViewController中,我添加了以下方法:
ViewController.h:
@interface
{
IBOutlet UITextView *textView;
}
- (void)openFile:(NSString *)myString;
ViewController.m:
- (void)openFile:(NSString *)myString
{
textView.text = myString;
}
在我的AppDelegate中有以下内容:
AppDelegate.m:
#import "ViewController.h"
@implementation AppDelegate
- (BOOL)application: [...] didFinishLaunchingWithOptions: [...]
{
ViewController *test = [[ViewController alloc] init];
[test openFile:@"this is a test"];
}
当我尝试从我的AppDelegate调用该方法时,它实际上被调用并按预期传递字符串。
我通过NSLog(@"%@", myString);
进行了测试。
但textView
的价值不会改变。
首先我认为可能还有另一个问题,所以我在加载视图等之后用UIButton调用了该方法。但是一切正常并且textView发生了变化。
然后我想,在从AppDelegate调用我的方法后,可能会加载视图。 我放了几个NSLogs,事实证明,视图已完全加载,然后我的AppDelegate调用该方法。
因此AppDelegate在视图完全加载并且传递String后调用[test openFile:(NSString *)]
。但是我的textView的价值仍未改变。
对此有何建议? 你们有没有遇到同样的问题?
答案 0 :(得分:1)
您没有为ViewController加载任何视图。所以插座没有任何连接。如果从NIB(xib)文件加载视图和ViewController,则不必创建ViewController的另一个实例。这就是你在分配和初始化一个新的ViewController时所做的事情,创建一个连接到任何东西的新实例。
由于存在IBOutlet,我认为有一个xib文件。尝试像
这样的东西- (BOOL)application: [...] didFinishLaunchingWithOptions: [...]
{
ViewController *test = [[ViewController alloc] initWithNibName:@"YourXibName"
boundle:nil ];
[test openFile:@"this is a test"];
self.window.rootViewController = test.view ;
[self.window makeKeyAndVisible];
return YES;
}
答案 1 :(得分:0)
不完全是我需要的。但是你给了我正确的想法。 非常感谢!
self.viewController = [[test3ViewController alloc] initWithNibName:@"YourXibName" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
[self.viewController openFile:@"Der Test"];