【问题标题】:How to transfer button sender to another class如何将按钮发件人转移到另一个班级
【发布时间】:2016-04-17 23:53:56
【问题描述】:

所以我正在快速构建一个简单的信使。我在viewWillAppear 上为不同的 UI 使用视图状态枚举,即 .Offline、.Default。我有一个convoVC 和一个InboxVC

从我的InboxVC,我正在转换到一个convoVC,它显示用户和另一个用户之间的消息,这些消息要么从收件箱中选择(在这种情况下,我想要conversationVC 的默认状态),要么选择当我从“撰写新消息”按钮(在这种情况下,我想要 conversationVC 的“.Compose”状态)转换时,来自使用搜索栏的查询。

我在设置convoVC 的状态时遇到问题,因为我的函数的发送者将segue 从InboxVC 调用到convoVC

如果按下撰写按钮进行转换,则为 UIBarbuttonItem 类型的发送者,如果按下 tableview 单元格进行转换,则为 myAppName.InboxVC 类型的发送者。

每个州发生的事情的代码都是微不足道的,因为没有更好的词。

这是我在InboxVC 中的操作函数,从我的tableView 的didSelectRowAtIndexPath methodbarButtonItem 选择器调用:

func compose(sender: AnyObject) {
    self.performSegueWithIdentifier("toConversation", sender: sender)
}

我尝试在InboxVC 中声明的变量中捕获发件人(在撰写函数中和ViewWillDisappear 中但不是两者)并将其传输到convoVC 中的另一个变量,然后检查其类型以在@ 中设置状态987654338@.

我的问题是它总是为零。如何转移发件人?请帮助我是 swift 新手。 谢谢! (标记为 obj-c 因为翻译并不难)

变量在两个 VC 中都称为 sender,并声明为 AnyObject 类型?

我试过了

self.sender = sender
convoVC().sender = sender

我也试过

self.sender = sender

然后设置sender (in convoVC) = InboxVC().sender

【问题讨论】:

    标签: ios objective-c swift


    【解决方案1】:
    func compose(sender: AnyObject) {
        self.performSegueWithIdentifier("toConversation", sender: sender)
    }
    

    compose(sender: AnyObject) sender 是您的按钮对象,self.performSegueWithIdentifier("toConversation", sender: sender) sender 是您的视图控制器。

    所以你必须用self 打电话给self.performSegueWithIdentifier("toConversation", sender: self)

    要传递按钮对象,您可以在另一个类中创建一个引用,并在 func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) 方法中创建该类的对象并为您分配按钮发送者。

    【讨论】:

    • 不完全。在撰写中,我的发件人将是我的视图控制器或我的条形按钮项,具体取决于用户是点击视图控制器表格视图单元格还是用户点击条形按钮项。所以我必须在调用 performSegueWithIdentifier 方法时保留 sender: sender 。除此之外,你是对的。我的想法完全不同,谢谢!
    【解决方案2】:

    func compose(sender: AnyObject) { self.performSegueWithIdentifier("toConversation", sender: sender) }

    在这里 撰写(发件人:AnyObject) sender 是你的按钮对象 并且在 self.performSegueWithIdentifier("toConversation", sender: sender) sender 是您的视图控制器。

    所以你必须打电话
    self.performSegueWithIdentifier("toConversation", sender: self) with self.

    要传递按钮对象,您可以在另一个类和 func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) 方法中创建引用,您应该创建该类的对象并为您分配按钮发送者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多