Iphone UILabel无法在视觉上刷新 问题

Iphone UILabel无法在视觉上刷新 问题,iphone,ios,cocoa,uilabel,Iphone,Ios,Cocoa,Uilabel,我有一个UILabel隐藏在几层子视图中,我似乎无法更改它的文本。更新标签的代码位于MyCardSubclass的updateVisualElements方法中。真正奇怪的是,当我记录这些标签的描述时,文本已经更新,但它不可见。下面是它的样子: 在我的视图控制器的viewDidLoad方法中,我初始化了UIScrollView和我的卡对象。我将其cardwiew添加为子视图,如下所示: -(void)viewDidLoad { [super viewDidLoad]; MyCar

我有一个
UILabel
隐藏在几层子视图中,我似乎无法更改它的文本。更新标签的代码位于
MyCardSubclass
updateVisualElements
方法中。真正奇怪的是,当我记录这些标签的描述时,文本已经更新,但它不可见。下面是它的样子:

在我的视图控制器的
viewDidLoad
方法中,我初始化了
UIScrollView
和我的卡对象。我将其
cardwiew
添加为子视图,如下所示:

-(void)viewDidLoad
{
    [super viewDidLoad];
    MyCardSubclass *myCard = [[MyCardSubclass alloc]initWithInfo:info andPoint:CGPointMake(5, runningYValue)];
    [myCard setParentViewController:self];
    [scrollView addSubview:[myCard cardView]];

    //Resize scrollView contentSize
}
我的名片 我的卡片子类 我试过的
  • 设置文本后调用
    [self.totalAmountLabel setNeedsDisplay]

  • 使用
    [self.totalAmountLabel performSelector:@selector(setText:)with object:amount afterDelay:0.0]


您可以尝试一件事,使用
标记
属性获取添加的标签并更改其内容

示例:

   UILabel totalAmountLabel = [[UILabel alloc]initWithFrame:CGRectMake(labelWidth,
                                                                     runningYValue,
                                                                     labelWidth,

  [totalAmountLabel setText:amount];
  totalAmountLabel.tag = 100;
  [toReturn addSubview:totalAmountLabel];
然后在您的
updateVisualElements()

 UILabel *tempTotalAmountLabel = (UILabel *)[self.view viewWithTag:100];
 [tempTotalAmountLabel setText:amount];

修好了!问题并不在于我试图设置标签或绘制视图

我没有正确地使用我的初始值设定项来初始化我的内容视图,只初始化了一次

我在我的子类中删除了这个覆盖

-(UIView *)cardView
{
  [self setContentView:[self contentViewFromCardInfo:self.cardInfo]];
  return [super cardView];
}
我还从我的超类中的
-(UIView*)cardwiew
方法中获取代码,并将其放入
-(UIView*)buildcardwiew
方法中,然后将cardwiew属性访问器重写为它应该是的内容

-(UIView *)cardView
{
    if(!_cardView)
        _cardView = [self buildCardView];

    return _cardView;
}

感谢您的意见和评论。

从哪里调用updateVisualElements?我没有看到它被调用。我没有包含该部分,但是在收到通知后,我关闭了一个模态视图控制器,然后调用updateVisualElements。我只是确认一下,你看到updateVisualElements中的NSLog语句打印出来了吗?我真的在尝试验证该方法是否确实被调用?是的,我可以验证这些日志是否正在打印,该方法是否确实被调用。标签的初始值如何?在更改文本之前,可以在UI中查看初始值吗?将文本设置为IB中与众不同的内容,然后首先查看您是否看到了这一点。如果你不知道,这是一个很大的线索。
-(UIView *)cardView
{
  [self setContentView:[self contentViewFromCardInfo:self.cardInfo]];
  return [super cardView];
}
-(UIView *)cardView
{
    if(!_cardView)
        _cardView = [self buildCardView];

    return _cardView;
}