我有UIViewController
(ContentViewController
)连接到View xib。我在TextView
上放了一个UIView
,它在IB的层次结构中显示为子视图
ContentViewController
有一个标签作为插座,连接到ContentView.xib
上的标签。当下面的代码执行时,第一个视图显示文本视图,但滚动浏览其他视图/页面只显示标签。
for(int i=0; i< 5; i++){
ContentViewController *contentView = [[ContentViewController alloc] initWithNibName:@"ContentView" bundle:[NSBundle mainBundle]];
[contentView loadView];
contentView.theLabel.text =[NSString stringWithFormat:@"hello again..%d", i];
[self.scrollView addSubview:contentView.view];
}
我可以将按钮或文本字段拖到IB中的视图上,当我滚动页面时它们都在那里。上面的文字也在标签上设置。 textview在第一页后消失。我也无法设置它的文字。我已将新的textview拖到UIView
上,它也会在第一页后消失。我需要为textview做些什么吗?
我发现每页都有UIScrollView
。如果我在滚动视图所在的位置垂直滑动,则会显示文本。但是我必须在第一个之后的所有滚动视图中这样做。
但是,一旦我滑动它们,文本将一直显示,直到应用程序重新启动。如果没有足够的文本来导致滚动,则文本视图将永远不会出现。有关此行为的任何建议吗?
答案 0 :(得分:1)
尝试:
[textView setNeedsDisplay];
原始答案
您不必以不同方式处理textview。
我首先担心你的“loadview”。你永远不应该直接打电话。它在需要时自动调用。
此外,您应该在循环之前声明contentview并且您正在泄漏内存。
您的另一个问题是您在循环期间从不更改每个视图的帧。它们的起源都是{0,0}。据我所知,从您的代码中可以看出。这可能就是隐藏您的观点的原因。
最后,在样式说明中,我不会叫我视图控制器XXXXXview,他们应该在其中有单词控制器。
CGRect frame;
ContentViewController *myContentViewController = nil;
for(int i=0; i< 5; i++){
myContentViewController = [[myContentViewController alloc] initWithNibName:@"ContentView" bundle:[NSBundle mainBundle]];
frame = myContentViewController.view.frame;
frame.origin.x=(frame.size.width*i);
myContentViewController.view.frame=frame;
myContentViewController.theLabel.text =[NSString stringWithFormat:@"hello again..%d", i];
[self.scrollView addSubview: myContentViewController.view];
[myContentViewController release];
}
添加: 另请检查scrollviews contentView框架属性:
scrollView.contentSize = CGSizeMake(numberOfContentViews*contentViewWidth, contentViewHeight);
添加更多内容:
尝试在viewDidload或viewDidAppear中以编程方式添加textView以查看是否有效。
在你的评论之后,如果我不得不再做一次猜测,我会说你可能会在添加后在代码中的其他地方操作textView。开始注释掉影响textView的任何行,看看会发生什么。