Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » UltraLite - C 及 C++ 编程 » API 参考 » 教程:使用 C++ API 构建 iPhone 应用程序

 

第 7 课:添加进度显示

在上一课中,已添加了在主线程中执行的基本同步。建议不要以这种方式阻塞主线程。在本课中,将把同步移动到后台线程,并添加同步观察方法以更新进度显示。

 创建进度工具栏

在实现中合成属性,并在 dealloc 方法中添加释放调用。在 Xcode Resources 文件夹中双击 ProgressToolbarViewController.xib,打开 ProgressToolbarViewController。由于此视图将在工具栏中显示,所以必须适当调整其大小,并设置其背景属性:

  1. 在 [Document] 窗口 (Command-0) 选择 [View] 对象。

  2. 在 [Attribute Inspector] (Command-1) 中,将模拟的状态栏设置为 [None]。

  3. 将 [Background opacity] 设置为 0%

  4. 取消选中 [Opaque] 设置。

  5. 在 [Size Inspector] (Command-3) 中,将宽度设置为 232,将高度设置为 44。

 ♦  添加进度视图
  1. 单击 UIProgressView 并将其从 [Library] 拖动到 [View]。

  2. 在 [Size Inspector] (Command-3) 中,将进度视图的位置设置为 26,29。

  3. 将进度视图的宽度设置为 186。

  4. 在 [Attributes Inspector] (Command-1) 中,将风格设置为 [Bar],将进度设置为零。

 ♦  添加标签
  1. 从库中单击 UILabel 并将其拖动到视图中。

  2. 在 [Size Inspector] (Command-3) 中,将标签的位置设置为 14,5。

  3. 将标签的大小设置为 210,16。

  4. 在 [Attribute Inspector] (Command-1) 中,将文本设置为 [Sync Progress]。

  5. 将布局对齐设置为居中对齐。

  6. 将字体设置为 Helvetica 粗体,字号为 12。

  7. 将文本颜色设置为白色。

  8. 将阴影颜色设置为 RGB:(103,114,130),不透明度为 100%。

 ♦  将新的标签和进度视图连接到出口
  1. 在 [Document] 窗口中选择 [File's Owner]。

  2. 在 [Connectors Inspector] (Command-2) 中,将标签出口链接到先前步骤中创建的 UILabel

  3. 将进度出口链接到先前步骤中创建的 UIProgressView

  4. 保存 XIB 文件并关闭 [Interface Builder]。

此视图将添加到 RootViewController 的工具栏。但是,DataAccess 对象还将使用对其的引用,以显示同步的进度。添加以下实例变量:

ProgressToolbarViewController * progressToolbar;

并将属性添加到 DataAccess 类:

    @property (retain, readwrite) IBOutlet ProgressToolbarViewController *    progressToolbar;

导入 ProgressToolbarViewController 标头并在实现中合成属性。要将进度视图实际添加到工具栏,请将以下内容添加到 RootViewControllerviewDidLoad 方法:



    // Create progress display 
    ProgressToolbarViewController *    progress =  
    [[ProgressToolbarViewController alloc]  
     initWithNibName:@"ProgressToolbarViewController"  
     bundle:nil]; 
    
    // Register the toolbar with the DataAccess 
    [[DataAccess sharedInstance] setProgressToolbar:progress]; 
    
    // Setup UIBarButtonItems 
    UIBarButtonItem    *                space =  
    [[UIBarButtonItem alloc] 
     initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace  
     target:nil 
     action:nil]; 
    UIBarButtonItem    *                progressButtonItem =  
    [[UIBarButtonItem alloc] initWithCustomView:progress.view]; 
    
    // Put them in the toolbar 
    self.toolbarItems =  
    [NSArray arrayWithObjects:space, progressButtonItem, space, nil]; 
    [space release]; 
    [progressButtonItem release];

RootViewController 的工具栏现在有了进度视图,尽管工具栏已隐藏。下一节将把同步移动到后台线程,并在同步过程中显示进度。

 在后台线程执行同步