在 UITableView 中的 viewdidload 上选择 Cells,基于 String Array (Swift)

Posted

技术标签:

【中文标题】在 UITableView 中的 viewdidload 上选择 Cells,基于 String Array (Swift)【英文标题】:Select Cells on viewdidload in UITableView, based on String Array (Swift) 【发布时间】:2015-06-13 00:20:37 【问题描述】:

如何根据 Core Data Array 中的匹配字符串值在 UITableview 中选择多个单元格?

我已经保存了之前选择的行(作为字符串),但是现在当我再次加载表格时,我希望再次选择所有内容。我找不到或想不出任何解决方案。

数组:

 var category:[String] = ["News", "Sport", "Weather", "Earth", "Future", "Shop", "TV", "Radio", "Food", "Music", "Travel", "Local", "Nature", "Venue", "Money"]

我试图找出selectRowAtIndexPath,但我没有在 Swift 中看到它。

这是我从 Core Data 获取数据的方式

func fetchData()
        let entityDescription = NSEntityDescription.entityForName("UserSettings", inManagedObjectContext: Context!)
        let request = NSFetchRequest()
        request.entity = entityDescription
        var dataObjects: [AnyObject]?
        do 
            dataObjects = try Context?.executeFetchRequest(request)
         catch  let error as NSError 
            print(error)
            dataObjects = nil
        

        //CAN I UPDATE THE TABLE SELECTION FROM THE FETCH?
        for result in dataObjects as! [NSManagedObject] 
         print(result.valueForKey("favCategory")!)

        
    

更新 我怎样才能让这个基于存储在核心数据中的字符串进行选择(Viewdidload 上的多项选择)

 let rowToSelect:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0);  //slecting 0th row with 0th section
 self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition: UITableViewScrollPosition.None);

【问题讨论】:

你说的select是什么意思?视觉效果? 不是视觉效果,实际选择。好的,我有一个包含一堆值的数组(请参阅问题),我还有一个 UITabelView 具有与数组中相同的一组值,现在当有人单击每个单元格时,值将存储在核心数据中(我直到这里),现在我想知道如何选择它,即使我离开 UITableView 并回来进行更多选择 + 那些已经存储在核心数据中的选择。我希望我很清楚。我已经创建了一个获取请求,根据该数据,应该选择这些单元格。 【参考方案1】:

您无法选择viewDidLoad 上的单元格,因为viewDidLoad 中的tableView 尚未加载。您应该将 bool 变量作为标志存储在数据源中,然后将 cellForRowAtIndexPath: 方法更新为:

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

    let object = self.dataObjects[indexPath.row] as! YourObject
    cell.selected = object.isSelected

    return cell

【讨论】:

这不起作用。应该在 tableView:willDisplayCell:forRowAtIndexPath: 中调用它

以上是关于在 UITableView 中的 viewdidload 上选择 Cells,基于 String Array (Swift)的主要内容,如果未能解决你的问题,请参考以下文章

iOS中的UITab冻结

尝试在用户向 iOS 中的 UITableView 添加行时动态增加 UITableView 的高度

水平 UITableView 中的垂直 UITableView

UITableView 中的圆顶角

uiscrollview 中的 uitableview(滚动问题)

在 UITableView 中的 Scrolling Filmstrip 中的每个 UICollectionViewCell 中添加 UIButton