iPhoneアプリのナビゲーションバーに更新UIBarButtonItemを追加しました。ユーザーがボタンをタップしたら、更新ボタンをアニメーション化されたアクティビティインジケーターに変更し、操作(この場合はダウンロード)が完了したら、アクティビティインジケーターを更新ボタンに戻します。
IBを使用して更新ボタンを追加しました。次に、ボタンをタップして、新しいアクティビティインジケーターを作成し、元の更新ボタンへのポインターを保持します。そのようです:
refreshButtonItem = self.navigationItem.leftBarButtonItem;
if (activityButtonItem == nil)
{
activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 20,20)];
activityButtonItem = [[UIBarButtonItem alloc]initWithCustomView:activityIndicator];
}
self.navigationItem.leftBarButtonItem = activityButtonItem;
[activityIndicator startAnimating];
ここまでは順調ですね。問題は、ダウンロードが終了し、更新ボタンを再度追加しようとしたときに(以下を使用して)、次のことです。
[activityIndicator stopAnimating];
self.navigationItem.leftBarButtonItem = refreshButtonItem;
次のエラーが発生します:
[UIBarButtonItem hold]:メッセージが割り当て解除されたインスタンスに送信されました
私は明示的にリリースを呼び出していません。
A)これはいつ/どこで割り当てが解除されますか
B)私が探しているものを達成するためのより良い方法はありますか?