选择具有ID的单元格时执行segue

时间:2015-11-27 20:12:48

标签: ios swift swift2

我正在尝试在选择单元格时创建一个segue。我已经厌倦了使用cell.dequeueReusableCellWithIdentifier("")。然而它正在回归" nil"打开时。我已正确设置单元格ID并且它们匹配。非常感谢任何帮助!!

if menuTableView.dequeueReusableCellWithIdentifier("") == "logout" {
            print("logout")
            performSegueWithIdentifier("logoutSegue", sender: self)
}

提前致谢

1 个答案:

答案 0 :(得分:2)

当用户选择一个单元格时,有一个UITableView委托方法,这有助于了解用户何时选择了单元格,但我们需要确定它是否是已按下的注销单元格。

要识别单元格,我们将设置您的注销单元格的标记属性。

cellForRowAtIndexPath

在我们的didSelectRowAtIndexPath委托方法中,我们将在第一行中实例化loginTableViewCell并将其标记设置为5,如果行不为0,我们只返回正常的单元格

现在我们有一个标签为5且所有其他单元格的默认标签属性都不为0的单元格,现在,当用户选择一个单元格时,我们可以在func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let cell = tableView.cellForRowAtIndexPath(indexPath)! if cell.tag == 5 { //cell is login cell //perform segue here } } 中检查此方法委托表视图的方法。

CellForRowAtIndexPath

此委托方法为我们提供了所选单元格的表视图和indexPath。现在我们在表视图上调用package project1; /** * * @author danechristian */ import java.util.*; public class Project1 { static Scanner console = new Scanner(System.in); static final String SPECIAL_CHARACTERS = "!,#,$,%,^,&,*,|"; static String password; public static void main(String[] args) { System.out.println("Create a password: "); password = console.next(); if (validPassword(password)) { System.out.println("Password Saved"); } else { System.out.println("Invalid Passowrd. Password " + "must contain atleast 1 capital letter" + "1 lower case letter, 1 digit, 1" + "special character (!#$%^&*|) and " + "be atleast 8 characters long"); } } public static boolean validPassword(String password) { boolean upCase = false; boolean loCase = false; boolean isDigit = false; boolean spChar = false; if (password.length() >= 8) { for (int i = 0; i < password.length() - 1; i++) { if (Character.isUpperCase(password.charAt(i))) { upCase = true; } if (Character.isLowerCase(password.charAt(i))) { loCase = true; } if (Character.isDigit(password.charAt(i))) { isDigit = true; } if (SPECIAL_CHARACTERS.contains(password)) { spChar = true; } } } return (upCase && loCase && isDigit && spChar); } } 以获取所选的单元格。现在我们有了单元格,我们可以比较单元格的标签。如果标签是5,则选择了注销单元格,这样我们就可以在那里执行segue。