如何在SWIFT中的表格单元格上分配两个segue?

时间:2015-11-23 00:21:08

标签: ios swift segue viewcontroller

我是IOS swift的新手并且正在使用android。

这是我的问题:

我正在开发一个简单的IOS聊天应用程序。我已经完成了android ver,这是一种克隆。

它有名为VCList,VCMyFriends和VCChat的视图控制器。 VCList是我的第一个视图控制器,并有一个表视图。触摸表格视图单元格会将当前视图控制器更改为VCMyFriends或VCChat。

当我触摸一个单元格时,app会检查单元格的成员计数,所以如果它有其他成员,则转到VCChat。如果没有,VCMyFriends就邀请我的朋友们。如下图。

enter image description here

我发现的是,我不能在一个单元格上分配两个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传递。

小心。

2 个答案:

答案 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 标识符。

希望这有帮助