setNeedsDisplay不会改变UITableView的中心

时间:2014-04-21 08:32:06

标签: ios objective-c position interface-builder setneedsdisplay

通过 IB 添加了UITableView。我试图以编程方式更改UITableView的中心:

- (IBAction)OnClickPrescribingDoctorButton:(id)sender
{
    [_prescribingDoctorTableView setNeedsDisplay];
    NSLog(@"check before %f",_prescribingDoctorTableView.center.y);

    _prescribingDoctorTableView.center = CGPointMake(50,200);

    NSLog(@"check after %f",_prescribingDoctorTableView.center.y);
}

LOG:

2014-04-21 13:40:18.898 SmartWatch[1833:70b] check before 788.000000
2014-04-21 13:40:18.898 SmartWatch[1833:70b] check after 200.000000

2014-04-21 13:40:20.075 SmartWatch[1833:70b] check before 788.000000
2014-04-21 13:40:20.075 SmartWatch[1833:70b] check after 200.000000

正如您在日志中看到的那样,UITableView Y轴值发生了变化,但我看不到任何效果或UITableView正在重新绘制,因为我打电话给 setNeedsDisplay ,我也不明白为什么每当我通过点击{来调用此代码时, Y轴值值会恢复为788 {1}}。

1 个答案:

答案 0 :(得分:0)

尝试使用[[_prescribingDoctorTableView superview] setNeedsLayout]而不是[_prescribingDoctorTableView setNeedsDisplay]来布局子视图。

如果这不起作用,则继承视图并覆盖方法

- (void)layoutSubviews (or) - (void)setFrame:(CGRect)frame

通过在这些方法中放置断点进行调试,以便您可以了解更新帧的位置。