在iOS中加载某些活动时,如何禁用导航栏后退按钮?

在iOS中加载某些活动时,如何禁用导航栏后退按钮?,ios,iphone,objective-c,Ios,Iphone,Objective C,我有两个视图控制器 在第二个视图控制器中,当我单击search按钮action(活动已启动,就像web服务正在执行)时,从web服务获取数据后,它将显示UIAlertview 我的问题是,当我按下搜索按钮(活动开始)时,现在我点击了导航栏上的后退按钮。现在,我在上一个视图(第一个视图控制器)上。我现在有了UIAlertview对搜索按钮活动的响应 显然,我的应用程序会在警报视图的OK按钮上崩溃 那么在这种情况下, 如何禁用导航栏后退按钮?(当我点击搜索时) 或 如何防止单击“后退”按钮时显示UI

我有两个视图控制器

在第二个视图控制器中,当我单击search按钮action(活动已启动,就像web服务正在执行)时,从web服务获取数据后,它将显示UIAlertview

我的问题是,当我按下搜索按钮(活动开始)时,现在我点击了导航栏上的后退按钮。现在,我在上一个视图(第一个视图控制器)上。我现在有了UIAlertview对搜索按钮活动的响应

显然,我的应用程序会在警报视图的OK按钮上崩溃

那么在这种情况下,

如何禁用导航栏后退按钮?(当我点击搜索时)

如何防止单击“后退”按钮时显示UIAlerview?

更新:


我尝试了所有方法来隐藏后栏按钮。:-)

将UIAlertView的引用另存为属性

@property (strong, nonatomic) UIAlertView *alert;
显示警惕

  self.alert = [[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles: nil];
    [self.alert show];
如果出现“风险”,请撤换代表

self.alert.delegate = nil;
风险结束后,重置代表

self.alert.delegate = self;

仅隐藏按钮或禁用用户交互不是最佳做法,因为用户不知道应用程序发生了什么,如果处理时间较长,用户会认为应用程序已冻结并将其终止。这些情况下的良好实践是HUD,它是阻止用户交互的进度指示器。在这种情况下,用户将看到后台正在发生一些事情,并等待它完成,如果他累了要返回,HUD将不允许他返回。我通常用这个:
,实现非常简单,看起来也很不错,但是您可以自己编写一个

self.navigationItem.hidesBackButton=YES?解决此问题的最佳方法是禁用视图的用户交互。请在搜索按钮的操作中编写此代码:-self.navigationController.userInteractionEnabled=NO;获取数据后:-self.navigationController.userInteractionEnabled=YES;self.navigationItem.backBarButtonItem.enabled=否;试试self.navigationItem.LeftBarButtonim=nil;self.navigationItem.hidesBackButton=YES我也在使用MBProgressHUD。导航后退按钮在HUD设置动画或处理时工作。您可以禁用按钮、标签等其他控件的交互,但不能禁用导航栏。:-)它应该会挡住整个屏幕,在我的情况下,当显示HUD时,我无法再触摸。。。