【问题标题】:iOS ViewController uilabel only updates on rotation in tab bar applicationiOS ViewController uilabel 仅更新标签栏应用程序中的旋转
【发布时间】:2013-04-01 02:04:26
【问题描述】:

我是 iOS 开发的新手,并试图弄清楚这里发生了什么。我有一个带有多个 ViewController 和类的选项卡栏应用程序。我的一个课程被调用并更新了运行良好的 uilabels。然后调用另一个类,它也运行一个后台循环,该循环旨在更新同一 ViewController 上的一些其他 uilabels,它们会使用循环中的第一个条目更新一次,但不会在循环保持在后台运行时更新。我可以看到循环仍在运行,并且在我使用 NSLog 记录输出时细节正在发生变化。

ViewController 也支持旋转,如果我旋转屏幕,则循环中的数字将被绘制到 uilabel 并固定,直到我再次旋转屏幕,即如果我将循环设置为 5 然后重置,具体取决于在循环中我旋转屏幕的位置将取决于 1 到 5 之间的哪个数字被绘制到 uilabel。

在单个 ViewController 应用程序上运行良好,循环运行并且 uilabels 按预期实时更新。

从 [super viewDidLoad] 调用更新 uilabels 的类。

谢谢

这是带有循环的类:-

 + (void)Loop:(FirstViewController *)vc

 {
 NSLog(@"start");


    static NSUInteger counter1 = 0;
    NSLog(@"with count %d", counter1);

    counter1++;
    NSLog(@"count ++ %d", counter1);

    NSString *label01 = [NSString stringWithFormat: @"%d", counter1];

    //update uilabel
    vc.cha01.text = label01;

            if (counter1 >= 5) {

                            counter1 = 0;

                            }


      // run loop with 1 second delay
      [self performSelector:@selector(Loop:) withObject:nil afterDelay:1];

    }

【问题讨论】:

    标签: ios rotation uilabel viewcontroller


    【解决方案1】:

    你的循环是错误的,第一次你传递了 viewController,但是当你调用 performSelector:withObject:afterDelay: 时,你传递了 nil

    因此vc参数将是nil,只需传递vc参数:

       // run loop with 1 second delay
      [self performSelector:@selector(Loop:) withObject:vc afterDelay:1];
    

    提示,您应该使用自定义对象来保存数据,然后在- (void)viewDidAppear:(BOOL)animated 中读出值并设置标签。 UIViewController 可以卸载以释放内存,这可能会导致代码出现问题。

    只需使用 MVC 解决方案,从而在您的案例中保存数据和字符串的模型。然后在deUIViewController中设置标签,MVC的视图部分,MVC中的控制器。


    一旦一个视图被加载,-(void)viewDidLoad 就再也不会被调用了。这适用于您在UITabBarController 中的所有视图。

    您应该将更新标签的代码移至- (void)viewDidAppear:(BOOL)animated 方法。

    【讨论】:

    • 成功了,非常感谢。我也会看看你的其他建议,看看我如何优化代码。
    猜你喜欢
    • 1970-01-01
    • 2019-02-17
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2018-05-28
    相关资源
    最近更新 更多