Iphone 在哪里可以加载需要知道Ivar内容的视图?
我使用UIScrollView在UITextView后面创建有线条的纸的幻觉(我必须使用单独的UIScrollView,以便有边距)。为了使用正确的行数绘制图纸,我需要传递UITextView的Iphone 在哪里可以加载需要知道Ivar内容的视图?,iphone,cocoa-touch,uiscrollview,uitextview,viewwillappear,Iphone,Cocoa Touch,Uiscrollview,Uitextview,Viewwillappear,我使用UIScrollView在UITextView后面创建有线条的纸的幻觉(我必须使用单独的UIScrollView,以便有边距)。为了使用正确的行数绘制图纸,我需要传递UITextView的contentSize.height 以下是目前发生的情况: 用户从父视图控制器中的表中选择注释 父视图控制器设置textview.text属性,以便我的UITextView知道要显示的文本 如果我在视图中设置UIScrollView,则它将出现,因为尚未设置textView.text,因此textVie
contentSize.height
以下是目前发生的情况:
视图中设置UIScrollView,则它将出现,因为尚未设置textView.text,因此textView.contentSize.height为零,因此它将不起作用。但是如果我在视图中设置它,它就会出现
,虽然它可以工作,但行会在文本之后出现
正确的方法是什么?只需在按下子视图控制器之前设置属性即可
我假设您的代码类似于父视图控制器中的代码:
- (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];
}
只需在按下子视图控制器之前尝试设置属性
我假设您的代码类似于父视图控制器中的代码:
- (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项。您应该在-viewDidLoad
中初始化所有视图。。。
实际上,在调用-viewDidLoad
之前,您的视图尚未完全加载
如果需要在控制器之间传递数据,可以在其中一个控制器中定义属性并设置其值。另一个控制器将在需要时读取该属性
具体来说,在-viewDidLoad
中,您可以使用存储在属性中的值初始化UI项。您需要的是子视图控制器上的一个简单的NSString*noteText
ivar,并将其设置为类似@property(非原子,复制)NSString*noteText
的属性,然后对其进行合成。然后,按照gcamp的建议,执行以下操作:
YourChildController *childVC = ...
child.noteText = @"your selected note text here";
[self.navigationController pushViewController:childVC animated:YES];
[childVC release];
然后在您的ChildController视图中加载:
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
如果这不起作用,您可以尝试在视图中设置scrollview将显示:方法。您需要的是子视图控制器上的一个简单的NSString*noteText
ivar,并将其设置为类似@属性(非原子,复制)的属性NSString*noteText
,然后将其合成。然后,按照gcamp的建议,执行以下操作:
YourChildController *childVC = ...
child.noteText = @"your selected note text here";
[self.navigationController pushViewController:childVC animated:YES];
[childVC release];
然后在您的ChildController视图中加载:
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
如果这不起作用,您可以尝试在您的视图中设置scrollview将显示:方法。这是我尝试的第一件事,但如果这样做,文本将变成空白!也许我应该尝试设置一个单独的文本属性,然后只指定实际的textview。ViewView中的文本将显示。。。稍后返回…可能是调用UITextView
时未加载视图。您可以尝试覆盖textView的getter,并检查该视图是否加载了isViewLoaded
。如果没有加载,只需执行即可!只是尝试使用不同的属性。。。在将子视图控制器推到堆栈上之前,我似乎无法设置属性。这怎么可能?如果已加载视图,则将设置出口。也许如果你给我看更多的代码:你是手动放置textView还是使用IB?我的错误-我在子视图控制器中设置了一个属性,但没有从父视图控制器设置它。现在可以了。因此,我可以在按下视图控制器之前设置自己的属性,但不能将子视图的参数设置为属性。很高兴知道:)这是我尝试的第一件事,但如果这样做,文本就会变成空白!也许我应该尝试设置一个单独的文本属性,然后只指定实际的textview。ViewView中的文本将显示。。。稍后返回…可能是调用UITextView
时未加载视图。您可以尝试覆盖textView的getter,并检查该视图是否加载了isViewLoaded
。如果没有加载,只需执行即可!只是尝试使用不同的属性。。。在将子视图控制器推到堆栈上之前,我似乎无法设置属性。这怎么可能?如果已加载视图,则将设置出口。也许如果你给我看更多的代码:你是手动放置textView还是使用IB?我的错误-我在子视图控制器中设置了一个属性,但没有从父视图控制器设置它。现在可以了。因此,我可以在按下视图控制器之前设置自己的属性,但不能将子视图的参数设置为属性。很高兴知道:)