【问题标题】:Get a UIButton's tag from the UIButtons which are in the popover presented by this UIButton从 UIButton 中获取 UIButton 的标签,该 UIButton 位于此 UIButton 呈现的弹出框中
【发布时间】:2015-08-05 05:09:40
【问题描述】:

标题看起来很长,但我想做的很简单。

我有几个相同的按钮排成一排,并将它们的标签设置为 0...n。单击其中任何一个(例如第二个)会弹出一个弹出视图,其中有几个按钮代表不同的选项(A、B、C、D)。如果我们点击选项 B,我想要做的是把第二个按钮的标题变成 B。

问题是弹出视图不知道是哪个 Button 呈现出来的,因为所有的 popoverView 都是同一个 UIViewController 类的实例。所以我正在考虑通过将它们的标签设置为不同的值来区分n个按钮。但是,我不知道如何从这个 UIButton 呈现的弹出框内的按钮中获取 UIButton 的标签。

非常感谢!

【问题讨论】:

    标签: ios objective-c swift uibutton uipopovercontroller


    【解决方案1】:

    这就是我将如何快速解决这个问题的方法。我将在 popoverViewController 中声明一个委托并有一个方法,例如

    protocol popOverViewControllerDelegate: class {
     func popOverViewController(controller: PopOverViewController,
        didSelectItem buttonTitle: String)
    }
    

    然后我会在popOver中的UIButton中添加一个目标动作

    button.addTarget(self, action: "selected:",forControlEvents:.TouchUpInside)
    

    select 方法会将 sender 传递给它

    func selected(sender:UIButton){
      delegate?.popOverViewController(self, didSelectItem: sender.currentTitle)
    //dismiss viewcontroller
    }
    

    记得声明

    weak var delegate: popOverViewControllerDelegate!
    

    现在有了调用 popOver 的视图控制器,这个委托的子类并实现它的方法。 Whenever a button in the popOver is selected, this method will be called and the currentTitle of the method will be passed.您现在可以使用它来设置调用 popOver 的按钮的 currentTitle。 如果您在最后一部分需要进一步帮助,请询问。

    【讨论】:

    • 这正是我现在的做法。问题是在我的呈现视图控制器中实现委托方法func popOverViewController(controller: PopOverViewController, didSelectItem buttonTitle: String) 时,我如何知道使用此buttonTitle 设置哪个按钮?我正在考虑传递sender.currentTitle 以及sender.superview.superview.tag 之类的东西,然后我会知道哪个按钮正在呈现这个弹出视图。但是,我是如何得到这个标签的。
    【解决方案2】:

    我通过添加属性tagNumber 解决了这个问题,这样在实例化popoverViewController 的类之后,我将实例的tagNumber 设置为发送者的标签。然后我将tagNumbersender.currentTitle 一起发回。这样,popover 的展示者就可以知道 UIButton 的标题和标签号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      • 2019-03-12
      • 2015-05-21
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多