我是IOS swift的新手并且正在使用android。
这是我的问题:
我正在开发一个简单的IOS聊天应用程序。我已经完成了android ver,这是一种克隆。
它有名为VCList,VCMyFriends和VCChat的视图控制器。 VCList是我的第一个视图控制器,并有一个表视图。触摸表格视图单元格会将当前视图控制器更改为VCMyFriends或VCChat。
当我触摸一个单元格时,app会检查单元格的成员计数,所以如果它有其他成员,则转到VCChat。如果没有,VCMyFriends就邀请我的朋友们。如下图。
我发现的是,我不能在一个单元格上分配两个segue或者用两种方式分割segue。所以我想我可以在没有segue的情况下改变我的VC吗?但是我找不到任何关于它的参考或教程。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if( memberCnt == 0 ) {
self.presentViewController(VCMyFriends(), animated: true, completion: nil);
} else {
self.presentViewController(VCChat(), animated: true, completion: nil);
}
}
以上是我的最后一次尝试,但失败了。它移动到某处,但根本没有显示任何内容。如果可以,我希望使用segues,因为有一些数据可以通过segue传递。
小心。
答案 0 :(得分:0)
我通常做的是通过instantiateViewControllerWithIdentifier创建控制器的实例,并在调用presentViewController之前设置必要的成员变量。如果您希望该功能返回上一个窗口,也可以添加NavigationController。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
let mainStoryBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
if( memberCnt == 0 )
{
let vcMyFriends = mainStoryBoard.instantiateViewControllerWithIdentifier("VCMyFriend") as! VCMyFriends
vcMyFriends.membervar1 = membervar1
vcMyFriends.membervar2 = membervar2
self.presentViewController(vcMyFriends, animated: true, completion: nil)
}
else
{
let vcChat = mainStoryBoard.instantiateViewControllerWithIdentifier("VCChat") as! VCChat
vcChat.membervar1 = membervar1
vcChat.membervar2 = membervar2
self.presentViewController(vcChat, animated: true, completion: nil)
}
}
membervar 和 membervar2 是您传递给View Controllers的数据。您需要在调用presentViewController之前设置它,以便在调用viewDidLoad时它们可用。
答案 1 :(得分:0)
只需这样做
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if( memberCnt == 0 ) {
performSegueWithIdentifier("VCMyFriends_segue", sender: self)
} else {
performSegueWithIdentifier("VCChat_segue", sender: self)
}
}
在故事板中,选择第一个segue
(图片中的红线)并选择Attributes inspector
,然后添加 VCMyFriends_segue 作为标识符
对第二行( blue )执行相同操作并添加 VCChat_segue 标识符。
希望这有帮助