Iphone 将UITextView作为UIView中的子视图添加到UIScrollView

Iphone 将UITextView作为UIView中的子视图添加到UIScrollView,iphone,cocoa-touch,uiview,uiscrollview,uitextview,Iphone,Cocoa Touch,Uiview,Uiscrollview,Uitextview,我有一个连接到视图xib的UIViewController(ContentViewController)。我在UIView上放置了一个TextView,它在IB的层次结构中显示为一个子视图。 ContentViewController有一个作为插座的标签,它连接到ContentView.xib上的标签上。当执行下面的代码时,第一个视图显示文本视图,但在其他视图/页面中滚动只显示标签 for(int i=0; i< 5; i++){ ContentViewController *cont

我有一个连接到视图xib的
UIViewController
ContentViewController
)。我在
UIView
上放置了一个
TextView
,它在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];
}
for(int i=0;i<5;i++){
ContentViewController*contentView=[[ContentViewController alloc]initWithNibName:@“contentView”捆绑:[NSBundle mainBundle]];
[contentView-loadView];
contentView.theLabel.text=[NSString stringWithFormat:@“你好,再次..%d”,i];
[self.scrollView addSubview:contentView.view];
}
我可以将按钮或文本字段拖到IB中的视图上,当我滚动页面时,它们都在那里。标签上也设置了上述文本。文本视图在第一页之后消失。我也不能设置它的文本。我将一个新的textview拖到
UIView
上,它在第一页之后也消失了。我需要为textview做些不同的事情吗


我发现
UIScrollView
在每个页面上。如果我垂直滑动滚动视图所在的位置,将显示文本。但在第一个滚动视图之后,我必须对所有滚动视图执行此操作

但是,一旦我刷了它们,文本将保持可见,直到应用程序重新启动。如果没有足够的文本导致滚动,textview将永远不会出现。对这种行为有什么建议吗?

试试:

[文本视图设置需要显示]


原始答案

您不必以不同的方式处理textview

我首先担心你调用“loadview”。你不应该直接打电话给他。它在需要时自动调用

此外,您应该在循环之前声明contentview,这样会导致内存泄漏

另一个问题是,在循环过程中,从不更改每个视图的帧。它们都有{0,0}的原点。据我所知,从你的代码。这可能是隐藏视图的原因

最后,在风格方面,我不会叫我视图控制器XXXXX视图,它们应该有controller这个词

    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];
    }

要添加更多内容:

尝试以编程方式在viewDidload或ViewDidDisplay中添加文本视图,以查看其是否有效


在您的评论之后,如果我不得不进行另一种猜测,我会说在添加textView之后,您可能正在代码的其他地方操纵它。开始注释掉影响文本视图的所有行,看看会发生什么。

不是viewDidLoad,而是loadView。调用viewDidLoad有时是不正确的,但不是loadView(AFAIK)。另外,您是否将scrollview的contentView大小设置为:(NumberOfContentView*contentViewWidth)?谢谢。调用viewDidLoad是暂时的,直到我让textview正常工作。否则,我必须创建非iBOutlet属性,然后在viewDidLoad期间进行分配。文本视图在第一次使用代码查看后仍然不显示。标签仍然显示良好。我还可以添加带有标签的UIWebView和UIScrollView。它们显示在所有页面上。对(numberOfContentViews*contentViewWidth)问题回答是。内容视图显示良好。我可以在每个角落放置控件并查看它们。我也试着把TeXVIEW放到中间,但是在第一个视图之后就消失了。你可以试着在VeldDead中添加TeXVIEW,看看你是否有同样的问题。
scrollView.contentSize = CGSizeMake(numberOfContentViews*contentViewWidth, contentViewHeight);