在 tableView Swift 中使用 javascript 数据

Posted

技术标签:

【中文标题】在 tableView Swift 中使用 javascript 数据【英文标题】:use javascript data in tableView Swift 【发布时间】:2015-07-27 20:40:00 【问题描述】:

您好,我是 Swift 编程新手,遇到以下问题。我在我的操作扩展中了解了如何从 safari 获取数据。使用 viewDidLoad 中的代码。到目前为止一切顺利。

我用教程构建了一个tableView,它工作正常。

知道我想使用从 safari 中提取的数据数据到我的 tableView 中。问题是我的 tableView 是先加载的,然后我的数据是从 safari 中提取的。

如何在 TableView 中直接使用数据?

这里是我的代码。当心我是新手,它正在建设中。 tableVie 现在填充了教程中演示的信息。

import UIKit

导入 MobileCoreServices

var webDataArray : [字符串] = []

类 ActionViewController: UIViewController, UITableViewDataSource, UITableViewDelegate

@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var myTableView: UITableView!

var arrayOfWebData: [CustomCellContents] = [CustomCellContents]()
var effectStannd = false

override func viewDidLoad() 
    super.viewDidLoad()

    for item: AnyObject in self.extensionContext!.inputItems 
        let inputItem = item as! NSExtensionItem
        for provider: AnyObject in inputItem.attachments! 
            let itemProvider = provider as! NSItemProvider
            if itemProvider.hasItemConformingToTypeIdentifier(kUTTypePropertyList as! String) 
                itemProvider.loadItemForTypeIdentifier(kUTTypePropertyList as! String, options: nil, completionHandler: (list, error) in
                    if let results = list as? NSDictionary 
                            NSOperationQueue.mainQueue().addOperationWithBlock 
                                var webData = results.description
                                webDataArray = split(webData) $0 == ","
                                var testArray = split(webDataArray[0]) $0 == " "
                                webDataArray.removeAtIndex(0)
                                webDataArray.append(testArray[7])
                                testArray = split(webDataArray[13]) $0 == " "
                                webDataArray.removeAtIndex(13)
                                webDataArray.append(testArray[1])
                                //println(webDataArray)
                                println(webDataArray.count)
                            
                        
                    )
            
        
    
    println(webDataArray.count)
    self.setUpWebData()
    self.addEffect()



override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.


@IBAction func done() 
    // Return any edited content to the host app.
    // This template doesn't do anything, so we just echo the passed in items.
    self.extensionContext!.completeRequestReturningItems(self.extensionContext!.inputItems, completionHandler: nil)


func setUpWebData()

    var webData1 = CustomCellContents(fileName: "Torrent", fileKind: "img1.jpeg")
    var webData2 = CustomCellContents(fileName: "Magnet", fileKind: "img2.jpeg")
    var webData3 = CustomCellContents(fileName: "Exe", fileKind: "img1.jpeg")
    var webData4 = CustomCellContents(fileName: "DMG", fileKind: "img2.jpeg")

    arrayOfWebData.append(webData1)
    arrayOfWebData.append(webData2)
    arrayOfWebData.append(webData3)
    arrayOfWebData.append(webData4)


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int

    return arrayOfWebData.count


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell


    let cell: CustomCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! CustomCell

    let CustomCellContents = arrayOfWebData[indexPath.row]

    cell.setCell(CustomCellContents.fileName, imageName: CustomCellContents.fileKind)

    return cell



/////// Custom swip from Right
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)





func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]?

    var shareAction = UITableViewRowAction(style: .Normal, title: "Download")  (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in

        let firstActivityItem = self.arrayOfWebData[indexPath.row]

        let activityViewControler = UIActivityViewController(activityItems: [firstActivityItem], applicationActivities: nil)

        self.presentViewController(activityViewControler, animated: true, completion: nil)
    

shareAction.backgroundColor = UIColor.blueColor()

return [shareAction]




//// de volgende functie zorgt ervoor dat de rij automatisch word gedeselecteerd
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

    self.myTableView.deselectRowAtIndexPath(indexPath, animated: true)



func addEffect()
    if effectStannd
        var effect = UIBlurEffect(style: UIBlurEffectStyle.Light)
        var effectView = UIVisualEffectView(effect: effect)
        effectView.frame = CGRectMake(0, 0, 320, 600)
        view.addSubview(effectView)
        effectStannd = false
    

【问题讨论】:

【参考方案1】:

我在加载后刷新我的 tableview 时找到了解决方案。像这样可以正常工作。

func didRefreshList()
    var tableView = myTableView
    self.tableData = webDataArray3
    tableView.reloadData()
    self.refreshControl.endRefreshing()

【讨论】:

以上是关于在 tableView Swift 中使用 javascript 数据的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 在 TableView 单元中使用步进器增加标签

在 Swift 中使用远程 JSON 数据填充 tableView

在 tableView Swift 中使用 javascript 数据

在 Swift4 中取消选中 TableView 所有 TableView 选择

Swift-使用委托在 tableView 上显示

在swift中使用tableView自动填充代理方法的最佳方法?