UITableView - 与表视图的交互消失了一切

时间:2014-11-18 18:44:32

标签: ios objective-c swift

我有一个UITableView,并将其添加为subview的{​​{1}}。 每当我选择一个单元格中的所有内容都会在UIView中消失。

其他时候已经出现过此问题,但是如果没有更改代码就停止了。

目前我使用的是Swift,但已经发生在Objective-C中。

代码:

TableView委托:

UITableView

还注册了numberOfSectionsInTableView numberOfRowsInSection cellForRowAtIndexPath heightForRowAtIndexPath didSelectRowAtIndexPath

的标识符
cell

但是方法override func viewDidLoad() { super.viewDidLoad() self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell") listObjectsToList = ["String 1","String 2","String 3"] self.view.frame.size = CGSizeMake(300, 110) self.view.layer.cornerRadius = 5 self.view.layer.masksToBounds = true self.tableView.scrollEnabled = false } override func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return listObjectsToList.count } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell: UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell cell.textLabel.text = listObjectsToList.objectAtIndex(indexPath.row) as? String return cell } override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return 40 } override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { self.tableView.deselectRowAtIndexPath(indexPath, animated: true) let objectSelected: AnyObject = listObjectsToList.objectAtIndex(indexPath.row) object.type = objectSelected as String self.view.removeFromSuperview() } 未被调用...

代码添加tableview:

didSelectRowAtIndexPath

我试过了:

        var listTypeTableViewController = ListTypeTableViewController()
        listTypeTableViewController.view.frame = CGRectMake(10, 80, 300, 130)
        self.view.addSubview(listTypeTableViewController.view)

但没有成功

2 个答案:

答案 0 :(得分:2)

问题是,我只是想提取UITableView来展示它。当我需要添加UITableViewController作为我UIViewController的孩子时:

var listTypeTableViewController = ListTypeTableViewController(nibName: "TableViewTypeScheduling", bundle: nil)        
listTypeTableViewController.view.frame = CGRectMake(10, 80, 300, 130)        
addChildViewController(listTypeTableViewController)
view.addSubview(listTypeTableViewController.view)

答案 1 :(得分:0)

原因是tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)方法中的这一行:

self.view.removeFromSuperview()

删除视图及其所有超级视图,包括表格视图。