0

我有一个简单的视图控制器,它显示一个UITextView和一个UILabel. 这些控件被添加到情节提要上,并作为出口连接到正确的视图控制器代码。它们在故事板上填充了文本,并且在测试时可以正常工作。

但是后来我尝试从超级视图中删除控件,然后再次将它们添加为子视图,所以基本上我应该处于与以前相同的状态。

视图控制器的代码如下。

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UITextView *textView;
@property (weak, nonatomic) IBOutlet UILabel *label;

@end

@implementation ViewController

- (void)viewWillAppear:(BOOL)animated
{
    [self.textView removeFromSuperview];
    [self.view addSubview:self.textView];

    [self.label removeFromSuperview];
    [self.view addSubview:self.label];
}

@end

但是下面代码的结果是UITextViewtextView变量)没有显示,但标签是。如果我在执行代码后打印出内容self.view.subviews,则在层次结构中并且也具有正确的框架。但是文本根本不可见。self.textViewviewWillAppearUITextView

我也试过:

  • 再次在代码中设置文本
  • UITextView在代码中设置背景
  • 呼唤setNeedsDisplay_UITextView

没有任何东西可以UITextView恢复,即使它存在于内存中。我现在的解决方案是在代码中分配另一个UITextView,但这是一个慢得多的操作。

那么,这里有什么问题?它是一个错误UITextView吗?为什么此代码适用于UILabel而不适用于UITextView

谢谢!

4

1 回答 1

0

确保插座已连接。左侧的灰色圆圈应填充如下所示:

在此处输入图像描述

您可以通过 ctrl 拖动再次连接它。您也可以通过检查是否self.textView不为零来确认它。

于 2013-10-16T19:26:26.567 回答