如何在表视图中使用单元格的标识符?

时间:2016-09-03 08:11:42

标签: swift tableview cell

这里是代码:

# your other imports here
import sys

USAGE_MSG = "Usage: test.py START_TIMESTAMP END_TIMESTAMP"
if len(sys.argv) != 3:
    print(USAGE_MSG)
    sys.exit(1)

try:
    s = int(sys.argv[1])
    t = int(sys.argv[2])
except TypeError: # couldn't convert one of the timestamps to int
    print("Invalid timestamp")
    print(USAGE_MSG)
    sys.exit(1)

# the rest of your code can go here

发生错误:

由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'无法使用标识符Viktor,可选(29)出列的单元格 - 必须注册一个nib或类标识符或连接故事板中的原型单元

我知道我必须标识单元格,如何从代码中执行此操作导致变量' Profile'我的import UIKit class SliderMenuTableViewController: UITableViewController { var tableArray = [String]() override func viewDidLoad() { super.viewDidLoad() // Uncomment the following line to preserve selection between presentations // self.clearsSelectionOnViewWillAppear = false // Uncomment the following line to display an Edit button in the navigation bar for this view controller. // self.navigationItem.rightBarButtonItem = self.editButtonItem() let age: String age = String(LoginViewController.AGE) let Profile = LoginViewController.NAME! + ", " + age tableArray = [Profile,"Second","Third","Fourth","Logout"] } // table view delegate method override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell = tableView.dequeueReusableCellWithIdentifier(tableArray[indexPath.row], forIndexPath: indexPath) as UITableViewCell cell.textLabel?.text = tableArray[indexPath.row] if cell.textLabel?.text == tableArray[0] { cell.imageView?.frame = CGRectMake(10, 10, 50, 50) cell.imageView!.layer.borderWidth = 1 cell.imageView!.layer.masksToBounds = false cell.imageView!.layer.borderColor = UIColor.blackColor().CGColor cell.imageView!.layer.cornerRadius = cell.imageView!.frame.width/2 cell.imageView!.clipsToBounds = true cell.imageView?.image = LoginViewController.AVATAR } return cell } 中的内容不是静态的,我无法从故事板中识别它?

3 个答案:

答案 0 :(得分:2)

您没有在单元格中提供正确的单元格标识符,因为它正在崩溃。你需要在这里提供CellIdentifier方法,你将用于细胞。在故事板中为相同的单元格放置相同的标识符。

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier", forIndexPath: indexPath) as UITableViewCell

    //configure your cell

    return cell
}

您必须按照以下方式注册单元格,具体取决于您使用自定义单元格的方式

注册自定义单元格

tableView.registerClass(MyCell.classForCoder(), forCellReuseIdentifier: kCellIdentifier)

使用Xib注册自定义单元格:

tableView.registerNib(UINib(nibName: "UICustomTableViewCell", bundle: nil), forCellReuseIdentifier: "UICustomTableViewCell")

更新:如果您通过XIB创建单元格,即使您也可以在XIB中分配单元格标识符。

答案 1 :(得分:0)

enter image description here

这里的故事板。 第一 我使用SWRevealViewController作为滑块菜单。现在通过单击菜单中的单元格,就像你告诉我它移动到另一个视图控制器,但菜单不在那里工作。

我使用了这段代码:

让mainStoryboard = UIStoryboard(名称:" Main",bundle:NSBundle.mainBundle()) 让vc:UIViewController = mainStoryboard.instantiateViewControllerWithIdentifier(" Profile")作为UIViewController             self.presentViewController(vc,animated:true,completion:nil)

这样:

    let vc: UIViewController =  (self.storyboard?.instantiateViewControllerWithIdentifier("viewContName"))!

self.navigationController?.pushViewController(vc,animated:true)

不起作用。如何移动到配置文件视图控制器和菜单仍然有效?

答案 2 :(得分:-1)

这是因为您的单元格未使用identifier正确启动。使用下面的代码创建单元格并使用。动态单元id初始化在这里产生概率。

let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

而不是你的:

var cell = tableView.dequeueReusableCellWithIdentifier(tableArray[indexPath.row], forIndexPath: indexPath) as UITableViewCell

修改

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    // here you get the each cell by indexpath.row 
    // code here to go to the another viewController accordingly 
    print("You selected cell #\(indexPath.row)!")
}

编辑2: 使用以下代码导航到另一个视图,单击单元格并相应地显示您的自定义数据。

let vc: UIViewController =  (self.storyboard?.instantiateViewControllerWithIdentifier("viewContName"))!
self.navigationController?.pushViewController(vc, animated: true)