progressView不起作用

时间:2011-04-09 23:00:36

标签: objective-c cocoa-touch

我想在应用程序启动时显示progressView(使用启动画面),因此,在 appDelegate .h文件中我声明了progressView:

UIProgressView *progView;

并在 appDelegate .m文件中我这样做了:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    sleep(1);



    progView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleBar];
    progView.progress = 0.75f;


// the rest..
}

我没有在启动画面中看到进度条,请提前帮助,请提前:)

2 个答案:

答案 0 :(得分:2)

你不能影响闪屏本身,它只是一个静态图像。

然而,您可以执行的操作是让您的应用加载,直到您收到委托消息,然后启动一些显示您的进度视图的基本UI,然后在后台线程中执行一些繁重的启动过程,相应地更新您的进度条。当线程完成其工作时,回调主线程以启动实际应用程序。

修改:更新了我的答案以澄清一些事情

iOS中的应用程序启动基本上分两个阶段进行。

  1. 操作系统启动您的应用程序,应用程序设置基本内容,启动运行循环等。在此期间,将显示启动画面。在此阶段,应用程序不受程序员的控制。
  2. -application:didFinishLaunchingWithOptions被调用。在这种方法中,作为程序员,您可以执行一些启动任务,例如加载数据库,连接到某些服务等。在此阶段,您可以影响用户界面并显示例如进度条。如果您需要这样做,请创建一个后台线程并在那里进行设置工作。
  3. 注意:如果您只是在UI上放置一个进度条然后在-application:didFinishLaunchingWithOptions:方法中执行某些操作,则它不起作用,因为直到 此方法后才会显示UI已经回来了。这就是你需要在后台线程中进行设置的原因。

答案 1 :(得分:1)

是progView的所有代码吗?因为你没有将它作为子视图添加到任何东西,所以你怎么能看到它?你需要这样的东西:

[splashView addSubview:progView];

frenetisch对IOS应用程序的启动过程给出了一些合理的解释,但听起来你需要对此进行一些基本的调查。在调用didFinishLaunchingWithOptions之前通常需要很短的时间,您可以显示第一个视图。但是,在您的应用实际可用之前,您还需要做些什么?您希望显示进度视图,因此必须有一些您计划执行的操作,这需要一些时间。正是这样,你需要显示进度视图并以某种方式更新它的进度。