代码之家  ›  专栏  ›  技术社区  ›  Bill

如何在加载UIViewController后填充它?

  •  0
  • Bill  · 技术社区  · 16 年前

    我希望我的UIViewController在屏幕中央显示一个“正在加载…”UILabel,然后,一旦显示出来,就开始加载要显示的数据。

    我怎样才能做到这一点?我尝试在viewDidAppear:中加载它,但此时视图仍未显示在屏幕上,因此应用程序对用户没有响应。如果我尝试设置一个短计时器(0.0001秒),以便显示视图,然后在之后的运行循环中调用数据加载方法,由于某种原因,从打开视图控制器到看到内容所用的时间大约是没有计时器时的三倍。在这种情况下,加载。。。文本出现,但用户必须等待太长时间。

    2 回复  |  直到 16 年前
        1
  •  0
  •   iXcoder    16 年前

    如果我没有误解你的目的,我想你只是想给用户一个“加载”状态,对吗?如果是这样,我建议您可以使用一个简单的ViewController来显示标签“正在加载…”,然后创建MainViw或下一个视图,当它完成后,隐藏第一个视图在屏幕上显示MainView。。。

        2
  •  0
  •   Madhup Singh Yadav    15 年前

    最好在一个线程中从 viewDidLoad 并在线程中调用方法,在调用线程之前显示标签,在通过线程加载数据时隐藏标签。

    -(void)viewDidLoad{
    [self showLabel];
    [NSThread detachNewThreadSelector:@selector(loadData:) toTarget:self withObject:nil];
    }
    

    更新

    - (void) loadData:(id)object{  
       NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
       //Network Operations
       //...  
       //...  
       //...  
       //...  
       [self performSelectorOnMainThread:@selector(reloadView:) withObject:arg waitUntilDone:[NSThread isMainThread]];  
       [pool release];  
    }  
    

    希望这有帮助。 谢谢,

    马杜普