我正在尝试在选择单元格时创建一个segue。我已经厌倦了使用cell.dequeueReusableCellWithIdentifier("")
。然而它正在回归" nil"打开时。我已正确设置单元格ID并且它们匹配。非常感谢任何帮助!!
if menuTableView.dequeueReusableCellWithIdentifier("") == "logout" {
print("logout")
performSegueWithIdentifier("logoutSegue", sender: self)
}
提前致谢
答案 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。