【问题标题】:How can i identify self.editButtonItem button's clicked event?如何识别 self.editButtonItem 按钮的单击事件?
【发布时间】:2011-11-12 03:27:30
【问题描述】:

我使用代码将 UINavigationController 的左栏按钮设置为编辑按钮

leftBarButton = self.editButtonItem;

我想针对编辑按钮的单击操作更改其他按钮的一些禁用/启用属性。

我怎样才能知道编辑按钮是否被按下?

【问题讨论】:

    标签: iphone uinavigationcontroller uinavigationitem


    【解决方案1】:

    编辑按钮的操作向您的视图控制器发送setEditing:animated 消息。在您的子类中覆盖它以在进入或离开编辑模式时执行其他操作。

    请务必在最后调用super 实现来管理向编辑视图过渡的其余部分。

    【讨论】:

    • 感谢您的信息...但是,如果我使用setEditing:animated 方法,动画和红色减号按钮不会出现
    • 您必须在覆盖结束时致电[super setEditing:editing animated:animated]
    【解决方案2】:

    所以我终于找到了解决方案...

    -(void)setEditing:(BOOL)editing animated:(BOOL)animated {
    
        [super setEditing:editing animated:animated];
    
        if(editing) {
            //Do something for edit mode
        }
    
        else {
            //Do something for non-edit mode
        }
    
    }
    

    在不改变self.editButtonItem按钮的原始行为的情况下调用此方法。

    【讨论】:

    • 永远不要使用第二种方法。
    【解决方案3】:

    在斯威夫特中:

    @IBOutlet weak var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
       ....
        self.navigationItem.leftBarButtonItem = self.editButtonItem()
    }
    
    override func setEditing(editing: Bool, animated: Bool) {
        // Toggles the edit button state
        super.setEditing(editing, animated: animated)
        // Toggles the actual editing actions appearing on a table view
        tableView.setEditing(editing, animated: true)
    }
    

    【讨论】:

      【解决方案4】:

      在 Swift 中,您可以遵循以下方法:

        @IBOutlet weak var tableView: UITableView!
      
          override func viewDidLoad() {
              super.viewDidLoad()
              navigationItem.rightBarButtonItem = editButtonItem()
          }
      
         override func setEditing(editing: Bool, animated: Bool){
      
              super.setEditing(editing, animated: animated)
              tableView.setEditing(editing, animated: true)
      
      
          }
      

      【讨论】:

      • 说真的,if (editing) 分支,你可以说 tableView.setEditing(editing, animation: animated) 并且它适用于两种情况?
      • 它有效,但从技术上讲你是正确的,谢谢你的建议
      • 在 UIViewController 内的 UITableView 上运行良好。
      【解决方案5】:
      UIBarButtonItem *barBut=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(doSomething)];
      
      
      self.navigationItem.leftBarButtonItem=barBut;
      
      [barBut release];
      
      
      .h
      -(void)doSomething;
      
      .m 
      
      -(void)doSomething{
      
          NSLog(@"dooooooooooooo");
              //ur stuff
      }
      

      更新:

       - (void)setEditing:(BOOL)editing animated:(BOOL)animated 
      

      将被调用

      editButtonItem
      
      Returns a bar button item that toggles its title and associated state between Edit and Done.
      
      - (UIBarButtonItem *)editButtonItem
      
      Discussion
      If one of the custom views of the navigationItem property is set to the returned object, the associated navigation bar displays an Edit button if editing is NO and a Done button if editing is YES. The default button action invokes the setEditing:animated: method.
      
          Availability
          Available in iOS 2.0 and later.
      
          See Also
          @property editing
      
          – setEditing:animated:
      
      
          Declared In
          UIViewController.h
      

      http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html

      【讨论】:

      • 谢谢 vijay.. 但我想知道 self.editButtonItem 按钮的场景
      猜你喜欢
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 2023-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多