0

我有一个UIViewController( ContentViewController) 连接到 View xib。我将 aTextView放在IB 上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每一页都有。如果我在滚动视图所在的位置垂直滑动,则会出现文本。但是我必须对第一个之后的所有滚动视图都这样做。

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

4

1 回答 1

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

要添加:还要检查滚动视图 contentView 框架属性:

scrollView.contentSize = CGSizeMake(numberOfContentViews*contentViewWidth, contentViewHeight);

要添加更多:

尝试以编程方式在 viewDidload 或 viewDidAppear 中添加 textView 以查看是否有效。

在您发表评论之后,如果我不得不再次猜测,我会说您可能在添加 textView 后在代码中的其他地方操作它。开始注释掉任何影响 textView 的行,看看会发生什么。

于 2009-05-28T18:09:31.807 回答