如何从另一个ViewController更新UILabel

时间:2013-02-13 11:26:07

标签: ios

我正在使用Storyboard和iOS 6.1,我正在启动这样的视图:

PropertiesViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Properties"]; 

PropertiesViewController高度为60像素,包括一些标签等。我想将这些视图添加到另一个ScrollView作为子视图。我正在做什么:

controller.leftLabel.text = @"Test";
controller.background.image = [UIImage imageNamed: @"someimage.png"];
controller.view.frame = CGRectMake(0, currentHeight, controller.view.frame.size.width, cellHeight);
[self.scrollView addSubview: controller.view];

leftLabel是{​​{1}},backgorund是UILabel。问题是视图的元素都没有在UIImageView之外更新。 PropertiesViewController只是添加了它的创建方式,不允许配置。

我已经检查了addSubview:方法,如果我没有错,那不是关于更新实例。我还已经在接收器类中添加了一个方法来更新NSNotificationCenter内的标签。这甚至都行不通。

我做错了什么?

注意:您可能会问为什么我没有使用PropertiesViewController。必须有更多的动态资源,而且还不清楚。使用ScrollView也无法使用TableView,在某些情况下我从不使用TableView,因此scrollview将管理滚动。

任何帮助都会很棒。

修改

根据Kalpesh在这里的回答我做了什么:

在我的发件人视图控制器中:

TableView

这是接收者:

PropertiesViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Properties"]; 
[[NSNotificationCenter defaultCenter] postNotificationName:@"update" object:@"Test string"];

controller.view.frame = CGRectMake(0, currentHeight, controller.view.frame.size.width, cellHeight);
 // not sure how but I can change frame successfully.
[self.scrollView addSubview: controller.view];

1 个答案:

答案 0 :(得分:5)

试试这个,当你想要改变文本标签时,你必须从其他viewcontroller发送通知  ..

 [[NSNotificationCenter defaultCenter] postNotificationName:@"changetext"        object:stringobj];
在mainviewcontroller中

  -(void)viewDidLoad

{
 [[NSNotificationCenter defaultCenter] removeObserver:self];
     [[NSNotificationCenter defaultCenter] addObserver:self    selector:@selector(changetext:) name:@"changetext" object:nil];

}

- (void) changetext:(NSNotification *)notification
{
   NSString * text =[notification object];
     lbl.text=text;

 }