根据布尔值继续执行不同的视图控制器

时间:2015-11-27 00:49:10

标签: ios swift uitableview swift2 tableview

当选择表格单元格时,如果布尔值为true,则尝试进入视图控制器,否则(如果为false),则继续执行其他视图控制器。任何帮助都会很棒! (布尔值为isAdmin,如果为true,则继续执行eventViewController,否则继续执行UserEventTableViewController)

链接到项目: https://www.dropbox.com/s/1d4d8opuxzpcuk4/TicketekApp.zip?dl=0

代码:

server.addEventListener("message", clientData.class, new DataListener<clientData>() {
        @Override
        public void onData(SocketIOClient client, clientData data, AckRequest ackRequest) throws Exception {
            System.out.println("Message from client: " + data.getMessage());

        }

    });



public class clientData{

String message;

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

2 个答案:

答案 0 :(得分:0)

我相信您可以使用UITableViewDelegate协议中的tableView:didSelectRowAtIndexPath:来完成您的目标。

将其添加到视图控制器

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

并在该函数中处理您的逻辑。

当您准备好转到下一个视图控制器时,请使用

performSegueWithIdentifier(identifier: String, sender: AnyObject?)

以下是一个例子:

if isAdmin {
    performSegueWithIdentifier(identifier: "segueToAdminView", sender: self)
} else {
    performSegueWithIdentifier(identifier: "segueToUserEventView", sender: self)
}

答案 1 :(得分:0)

您必须实现tableView委托方法didSelectRowAtIndexPath

示例如下:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let index = self.tableView.indexPathForSelectedRow?.row
    //use the index to know which cell you selected

    //check for your condition here something like
    if isAdmin {
        performSegueWithIdentifier("eventViewControllerSegue", sender: self)
    } else {
        performSegueWithIdentifier("userEventTableViewControllerSegue", sender: self)
    }
}

请注意以下事项:

  1. 在故事板中,将segue绘制到不同的视图控制器并分别分配segue ID。

  2. 在您的代码中,您不会更改isAdmin boolean的值。检查一下。

  3. 问候。

    关于如何从ViewController中提取的图片供您参考 enter image description here