【问题标题】:How can I get UIViewController to properly refresh / update its view?如何让 UIViewController 正确刷新/更新其视图?
【发布时间】:2012-07-12 04:16:38
【问题描述】:

我有一个UIViewController,其标签从外部服务器获取其文本集。在viewDidLoad 我添加:

[self.view addSubview:label];

几分钟后服务器更新文本,在应用程序中我按下一个按钮来激活它:

[self.view setNeedsDisplay];

但标签的文本在我重新编译应用程序之前不会更新。如何获取子视图标签以从服务器刷新/获取新文本?

【问题讨论】:

  • 完成对服务器的 api 调用时(实际上是从 API 调用中获取文本时)。那你有文字吗?所以请使用UILabelsetText: 方法在标签上设置文本。
  • 我需要在每次按下按钮时更新文本,我在哪里添加 setText?
  • 如果您是从 API 响应中设置文本,那么您每次按下按钮时都必须调用 api 对吗?
  • 所以在 api 调用完成时,你可以在主线程上调用一个选择器,用你从服务器获得的最新文本来更新标签。

标签: iphone objective-c xcode uiview


【解决方案1】:

label.text = @"new title"; 怎么样?

【讨论】:

    【解决方案2】:

    您需要在 Buttons 事件中添加 setText。

    -(void) viewDidLoad{
     UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
     [button addTarget:self action:@selector(buttonPressMethod:) forControlEvents:UIControlEventTouchDown];
     button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
     [self.view addSubview:button];
    
      [super viewDidLoad];
    }
    
    -(void) buttonPressMethod:(id) sender
    {
       label.text = @"The updated text from the server";
    }
    

    【讨论】:

      【解决方案3】:

      -(void)viewwillAppear
      {
      NSTIMER * chat = [NSTimer scheduledTimerWithTimeInterval:40 目标:自我选择器:@selector(getdata) userInfo:nil repeats:YES]; // 方法将每 40 秒调用一次

      }

      -(void)获取数据
      {
      从服务器调用数据并替换标签中的数据
      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-18
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 2018-10-09
        • 1970-01-01
        • 2012-08-31
        • 2012-07-04
        相关资源
        最近更新 更多