0

初めてストーリーボードを使用しようとしていますが、問題があります。

モーダル ビュー コントローラーの読み込み中に読み込みダイアログを表示する必要があります。

もっと詳しく説明します。ナビゲーションバーにボタンがあり、ユーザーがそれをクリックするとモーダルビューコントローラーが表示されますが、数秒かかるので、ユーザーに「アプリはロックされていません」と言う必要があります。

アップデート

これは正しく動作する最終的なコードです:

-(void)showLoading {

    UIActivityIndicatorView *loading = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    loading.frame = CGRectMake(275, 0, 40, 40);
    [loading startAnimating];

    [UIView animateWithDuration:0 animations:^ {

        [self.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:loading]];

    } completion: ^(BOOL completed) {

        UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"MyViewController"];
        [self presentModalViewController:vc animated:YES];

    }];

}

そしてviewDidLoad

[myBarButtonItem setTarget:self];
[myBarButtonItem setAction:@selector(visualizzaCaricamento)];
4

1 に答える 1

1

簡単な方法は、組み込みの を使用することUIActivityIndicatorです。大きい品種と小さい品種があります。すべてのビューに配置するか、UINavigationBar.

ボタンをローディング スピナーに置き換えるコードを次に示します。

UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[indicator startAnimating];

[self.navigationBar setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:indicator]];

アップデート

// In your viewDidLoad or somewhere like that.
[self.navigationBar setRightBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Do" style:UIBarButtonItemStyleBordered target:self action:@selector(doSomething:)]];

- (void)doSomething:(id)sender {
    // Show spinner
    UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
    [self.navigationBar setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:indicator]];
    [indicator startAnimating];

    // ... Load View
}
于 2013-02-07T15:59:13.810 に答える