0

我被困在试图UITextField在 titleViewController 上的对象中设置和检索文本。

我有一个 Journal 对象,它引用了 titleViewController 对象,但我似乎无法为UITextField.

我在 titleViewController 中有一个 UITextField 对象的出口,Journal 可以看到它,但是当我编写代码来设置值时,它运行时没有任何反应。

XCode 或 Log 中没有弹出错误。我知道它应该可以工作,因为设置可以访问由同一日志管理的其他此类视图控制器中的自定义方法。

-编辑-

以下是要求的代码示例:

//Get viewController from Array
TitleVC *titlePage = [_PageArray objectAtIndex:0];

//Get string from Dictionary
NSString *test = [_saveDictionary objectForKey:@"Name"];

//This is one of the attempts to set the UITextField 
//FIXED by Tomy211(but still does not work)
[titlePage.textName setText:test];

//This is attempting dot notation
titlePage.textName.text = test
titlePage.textName = test //Wrong I know but had to test

//Also made sure test was a proper string
NSLog(test) //Displayed "Dan" as Expected

这是在 Journal.m 中,它使用以下代码从情节提要中访问了对 titleVC 的引用:

-(UIViewController *)loadView:(NSString *)viewID{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:viewID];
    return viewController;
}

从该方法返回的 ViewController 用于在滚动视图中显示视图,并且我没有遇到过以这种方式从 ViewControllers 访问方法的问题。

我要做的就是让 Journal.m 设置并从 textName 读取值,这是一个连接到UITextField.

-更新-

我检查并发现我可以读取 textField 的值但不能写入它。

-最终更新-

我发现我的代码有问题。代码是正确的(减去 Tomy211 的更正),但问题是我在哪里调用代码。我在视图显示之前调用了该方法,因此当视图确实显示时它恢复为默认值。

注意所有有类似问题的人:在更新视图的 UIObject 部分的值之前检查以确保视图正在显示。如果您必须在未显示视图的情况下更新值,请使用实例变量并让 UIObject 在 vi​​ewDidLoad 方法中从它们那里获取它们的值。

4

1 回答 1

0

问题是我试图在加载视图之前更新 TextField 对象。将方法调用移到我加载视图的点之后可以解决问题。我已经更新了我的问题以反映什么是正确的,什么是不正确的。

注意所有有类似问题的人:在更新视图的 UIObject 部分的值之前检查以确保视图正在显示。如果您必须在未显示视图的情况下更新值,请使用实例变量并让 UIObject 在 vi​​ewDidLoad 方法中从它们那里获取它们的值。

于 2012-07-13T04:16:48.057 回答