如何将按钮发送者转移到另一个类

时间:2016-01-13 05:56:34

标签: ios objective-c swift

所以我正在迅速建立一个简单的信使。我在viewWillAppear上使用视图状态枚举用于不同的UI,即.Offline,.Default。我有convoVCInboxVC

从我的InboxVC,我正在转换为convoVC,它会在用户和从收件箱中选择的其他用户之间显示消息(在这种情况下,我想要{。{1的默认状态。当我从"撰写新消息"转换时,使用搜索栏从查询中选择。按钮(在这种情况下,我想"。撰写"状态为conversationVC)。

我在conversationVC上设置状态时遇到问题,因为我的函数的发件人将convoVC调用了InboxVC

  

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

由于缺乏更好的词,每个州发生的事情的代码都是微不足道的。

这是convoVC中的动作函数,来自我的tableView' InboxVCdidSelectRowAtIndexPath method选择器:

barButtonItem

我尝试在func compose(sender: AnyObject) { self.performSegueWithIdentifier("toConversation", sender: sender) } 内声明的变量中捕获发件人(在撰写函数内,在ViewWillDisappear内但不是两者中)并将其转移到InboxVC中的另一个变量,然后检查其键入以在convoVC中设置状态。

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

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

我试过

convoVC

我也试过

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

然后设置self.sender = sender

2 个答案:

答案 0 :(得分:1)

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

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

因此,您必须使用self.performSegueWithIdentifier("toConversation", sender: self)致电self

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

答案 1 :(得分:0)

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

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

所以你要打电话给 self.performSegueWithIdentifier(" toConversation",sender:self)with self。

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