ページ

2009年7月30日木曜日

WPSU(4) - 読み込み中を表示する(NSProgressIndicatorを回す)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

Webページを読み込んでいる状態がわかるように NSProgressIndicator を使って状態を表示する。

Cocoaはやっぱり!
インターネットにアクセスしよう
Web Kit #5 : ページタイトルとURLを表示

によれば Cocoa Bindings を使い Interface Builder で WebView と NSProgressIndicator をバインドするだけで良いと書いてある。

試してみたが NSProgressIndicator のバインド先一覧に WebView が出てこない。



ネットで探してみると、どうも Interface Builder 3 から仕様が変わったらしい。
Cocoa-dev

WebView does not expose bindings in IB 3



仕方が無いのでバインドをあきらめ、実装コードを書く事にする。


Cocoaの日々
WebKit検証(2) - プログレスバー


以前、自分で書いたコードを参考にしつつコードを書く。
こんな感じ。

WebController.h

@interface WebController : NSObject {

IBOutlet NSProgressIndicator* _progress_indicator;
}

@end


コントローラを一つ用意し、InterfaceBuilder でアウトレットに NSProgressIndicator を接続しておく。


WebController.m
#import "WebController.h"
#import <WebKit/WebKit.h>

@implementation WebController

- (void)awakeFromNib
{
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(progressStarted:)
name:WebViewProgressStartedNotification
object:nil];
[nc addObserver:self
selector:@selector(progressFinished:)
name:WebViewProgressFinishedNotification
object:nil];
}

- (void)progressStarted:(NSNotification *)notification
{
[_progress_indicator startAnimation:self];
}
- (void)progressFinished:(NSNotification *)notification
{
[_progress_indicator stopAnimation:self];
}

@end


実行してみよう。




回った。