所以我正在迅速建立一个简单的信使。我在viewWillAppear
上使用视图状态枚举用于不同的UI,即.Offline,.Default。我有convoVC
和InboxVC
从我的InboxVC
,我正在转换为convoVC
,它会在用户和从收件箱中选择的其他用户之间显示消息(在这种情况下,我想要{。{1的默认状态。当我从"撰写新消息"转换时,使用搜索栏从查询中选择。按钮(在这种情况下,我想"。撰写"状态为conversationVC
)。
我在conversationVC
上设置状态时遇到问题,因为我的函数的发件人将convoVC
调用了InboxVC
如果按下撰写按钮进行转换,则为UIBarbuttonItem类型的发件人;如果按下tableview单元格以进行转换,则为myAppName.InboxVC类型的发件人。
由于缺乏更好的词,每个州发生的事情的代码都是微不足道的。
这是convoVC
中的动作函数,来自我的tableView' InboxVC
或didSelectRowAtIndexPath 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
答案 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!)方法中创建一个引用,您应该创建该类的对象并为您指定按钮发送方。