【问题标题】:Changing a UIBarButtonItem state programmatically以编程方式更改 UIBarButtonItem 状态
【发布时间】:2019-01-17 10:04:57
【问题描述】:

我有一个 Edit/Done UIBarButtonItem,并且在同一个视图中还有一个取消按钮。

如果用户在编辑模式下点击取消按钮,我想将编辑按钮设置回其原始状态。

但我看不到以编程方式更改 UIBarButtonItem 状态的任何方式。这可以做到吗?或者有没有其他方法可以达到同样的效果?

【问题讨论】:

    标签: iphone cocoa-touch


    【解决方案1】:

    经过更多研究,事实证明正确的方法是更改​​视图控制器上的编辑状态。我试图单独更改表格视图的编辑状态和“编辑/完成”按钮。相反,当用户在编辑模式下点击取消按钮时,只需在处理取消按钮时执行此操作:

    if (self.editing) {
        self.editing = NO;
    }
    

    这将改变 tableView 和 Edit/Done 按钮的状态,因此下次显示视图时,视图会重置为正常(非编辑)状态。

    【讨论】:

      【解决方案2】:

      只是更改标题并自己拥有一个 BOOL 来存储按钮的当前状态怎么样?像这样:

      - (IBAction)cancelPressed {
         self.isBarButtonEditing = !self.isBarButtonEditing;
         if (self.isBarButtonEditing) {
            self.title = @"Done";
          }
      }
      

      【讨论】:

      • 这是个好主意,但由于两个原因行不通。该按钮在最初被点击后变为蓝色,我想让它恢复到原来的颜色。其次,如果我这样做,再次点击按钮会导致颜色更改,但不会更改标题。所以我真的需要改变按钮的真实状态。
      • 哦,你是说 UITableView 中的通用编辑按钮吧?
      • 也许你应该尝试使用 [self.tableView setEditing:NO animated:NO]
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多