在哪里可以加载需要了解Ivar内容的视图?

问题描述

| 我正在使用UIScrollView在UITextView后面创建衬纸错觉(我必须使用单独的UIScrollView,以便可以留有边距)。为了以正确的行数绘制纸张,我需要将其传递给UITextView的“ 0”。 这是目前发生的情况: 用户从父视图控制器中的表中选择一个注释。 父视图控制器设置了textview.text属性,以便我的UITextView知道要显示什么文本。 如果我在ѭ1中设置UIScrollView,则由于尚未设置textView.text,因此它将无法工作,因此textView.contentSize.height为零。但是,如果我在
viewDidAppear
中进行了设置,尽管可以工作,但这些行会在文本后面出现一会儿。 解决这个问题的正确方法是什么?     

解决方法

        只需在推子视图控制器之前尝试设置属性。 我假设您的代码类似于父视图控制器中的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UIViewController* childViewController = ...
    [self.navigationController pushViewController:childViewController animated:YES];
    childViewController.text = ...
    [childViewController release];
}
也许只是尝试
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UIViewController* childViewController = ...
    childViewController.text = ...
    [self.navigationController pushViewController:childViewController animated:YES];
    [childViewController release];
}
    ,        您应该在
-viewDidLoad
中初始化所有视图... 确实,在调用
-viewDidLoad
的那一刻之前,您的视图尚未完全加载。 如果需要在控制器之间传递数据,则可以在其中一个控制器中定义属性并设置其值。另一个控制器将在需要时读取该属性。 具体来说,在-
viewDidLoad
中,您可以使用属性中存储的值来初始化UI项。     ,        您想要的是子视图控制器上的一个简单的
NSString *noteText
ivar,并使之像ѭ9a这样的属性并进行合成。然后按照gcamp的建议执行以下操作:
YourChildController *childVC = ...
child.noteText = @\"your selected note text here\";
[self.navigationController pushViewController:childVC animated:YES];
[childVC release];
然后在YourChildController viewDidLoad中:
myTextView.text = noteText;
[myTextView sizeToFit]; // not sure if you need to do this or not

// now you can setup your background scroll view as needed
如果这样不起作用,则可以尝试在viewWillAppear:方法中设置滚动视图。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...