我在我的 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 retain]: message sent to deallocated instance
我没有明确地调用释放。
A) 何时/何地解除分配
B)有没有更好的方法来实现我正在寻找的东西?