2010-08-31 31 views
1

我在UIViewController中有一个UIView,我在viewDidAppear方法中添加了一个自定义子视图。如何使用自定义子视图更新或重置UIView?

MyView *myView = [[MyView alloc] initWithLabelText:text]; 
[self.view addSubview:myView]; 
[myView release]; 

text变量是在myView的标签上使用的字符串。每当您回到当前视图时,此text都会更改。但似乎viewDidAppear不重新加载视图 - 它反而加载一个新的视图 - 所以我有两个标签在彼此。

我试着用viewWillAppear但它没有任何区别。我也尝试使用[self.view setNeedsDisplay] - 没有帮助。我也试图让myView成为一个实例变量,但它也没有帮助。

什么工作是明确移除来看,当我宣布它作为一个实例变量:

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [_myView removeFromSuperview]; 
} 

虽然这个解决办法,我想又回到了它,当简单地重置视图。有谁知道如何做到这一点?我会很感激它;)

回答

0

不要每次都分配和初始化自定义子视图,只有第一次调用viewDidAppear。然后将其保留在物业中供以后使用。

+0

谢谢。但是它必须再次成为一个实例变量,不是吗? – marikaner 2010-08-31 01:03:02

+1

不一定,但是也是属性的实例变量是一个好地方,因为这有助于管理保留计数。 (并确保不要用相同名称的局部变量“覆盖”实例变量,或者错误地在另一个对象中使用实例变量)。 – hotpaw2 2010-08-31 01:32:36

0

下面的事情可以考虑。

viewDidLoad - > alloc和init你的子视图 viewDidAppear - >更新子视图 dealloc - >释放子视图。

+0

谢谢。是的,这就是我所做的。但在这里我也必须使用实例变量而不是局部变量。我认为应该有一种方法来“重新加载”整个视图。 – marikaner 2010-08-31 16:45:55

相关问题