【发布时间】:2016-09-07 10:18:12
【问题描述】:
我在侧边菜单/导航抽屉中为我的表格视图创建了一个自定义单元格,并且在大多数情况下一切似乎都工作正常,但是当我选择其中一行时(这会将我带到另一个 ViewController),然后来通过导航抽屉从后续表格视图返回,单元格仍然被取消选择。 例如:当我从侧面菜单表视图中选择 A 时,我被带到 AViewController,当我选择 B 时,我被带到 BViewController。所以基本上当我选择 A 并返回侧面菜单时,A 应该保持突出显示。我怎样才能做到这一点。 代码:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! slideMenuIconTableViewCell
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
switch indexPath.row {
case 0:
let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("MyCartViewController")
sideMenuViewController?.contentViewController = UINavigationController(rootViewController: viewController)
sideMenuViewController?.hideMenuViewController()
break
case 1:
let nextViewController:ProductListingViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ProductListingViewController") as! ProductListingViewController
nextViewController.productID = "1"
nextViewController.navigationTitle = "Tables"
sideMenuViewController?.contentViewController = UINavigationController(rootViewController: nextViewController)
sideMenuViewController?.hideMenuViewController()
break
case 2:
let nextViewController:ProductListingViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ProductListingViewController") as! ProductListingViewController
nextViewController.productID = "3"
nextViewController.navigationTitle = "Sofas"
sideMenuViewController?.contentViewController = UINavigationController(rootViewController: nextViewController)
sideMenuViewController?.hideMenuViewController()
break
default:
break
}
有人可以帮忙吗?
【问题讨论】:
-
首先,删除
break行(default后面的break除外),在 Swift 中不需要在 case 末尾添加break。其次,您明确告诉表格视图取消选择tableView.deselectRowAtIndexPath...行中的单元格。第三:appDelegate是干什么用的?代码中没有用到。 -
PS:
cell也没有使用。无论如何,您不得在cellForRowAtIndexPath之外创建重复使用的单元格。 -
@vadian 谢谢,我会按照您的建议进行更改。但是我用什么代替 tableView.deselectRowAtIndexPath
-
如果要保持选中的单元格,只需删除该行。
-
因为无法检查问题的整个代码。我猜是,您可能正在分配表格,或者您可能正在重新加载表格,可能在 viewWillAppear 中。您可以自行检查,如果这是您的问题,请告诉我们
标签: ios swift uitableview