Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉动刷新而不是刷新JSON数据_Php_Json_Swift_Xcode7 - Fatal编程技术网

Php 拉动刷新而不是刷新JSON数据

Php 拉动刷新而不是刷新JSON数据,php,json,swift,xcode7,Php,Json,Swift,Xcode7,我一直在尝试实现对我的tableview的拉刷新,以刷新服务器上的JSON数据。在我在调试区域屏幕上尝试的内容中,它向我显示数据重新加载,但当我在服务器上的PHP文件上进行更改时,单元格标签和图像不会刷新。。。。我正在使用下面的代码: import UIKit class JSONData: UITableViewController { var newsList = [News]() override func viewDidLoad() { su

我一直在尝试实现对我的tableview的拉刷新,以刷新服务器上的JSON数据。在我在调试区域屏幕上尝试的内容中,它向我显示数据重新加载,但当我在服务器上的PHP文件上进行更改时,单元格标签和图像不会刷新。。。。我正在使用下面的代码:

    import UIKit

    class JSONData: UITableViewController {    

    var newsList = [News]()

override func viewDidLoad() {
    super.viewDidLoad()

    self.loadJSONDATA()

    }


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

// MARK: - Table source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Potentially incomplete method implementation.
    // Return the number of sections.

    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete method implementation.
    // Return the number of rows in the section.
    return newsList.count


}


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


    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! NewsStrings

    let s = newsList[indexPath.row] as News

    cell.labellName.text = s.newsName
    cell.labelDesc.text = s.newsDesc
    cell.labelDate.text = s.newsDate
    cell.imgvImage.image = UIImage(named: "BgIcon.jpg")

    if let img = UIImage(data: s.newsImage)
    {
        cell.imgvImage.image = img
    }else
    {
        self.loadImages(s, indexPath: indexPath)
    }



    return cell

}


///////////////// JSON DATA ////////////////////////


func loadJSONDATA()
{ 
    let urlString = "http://example.com/folder/JSON.php"

    let config = NSURLSessionConfiguration.defaultSessionConfiguration()
    let session = NSURLSession(configuration: config, delegate:nil, delegateQueue: nil)

    if let url = NSURL(string: urlString)
    {

      let request = NSURLRequest(URL: url)

        let taskData = session.dataTaskWithRequest(request, completionHandler: {

            (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in


            if (data != nil)
            {

                var parseError:NSError?
                let parsedNews = (try! NSJSONSerialization.JSONObjectWithData(data!, options: [])) as! NSDictionary

                //print("JSON Data \n \(parsedNews)")

                if let news:AnyObject = parsedNews["News"]
                {
                    self.parseJSON(news)
                }


            } else

            {



            }

        })

        taskData.resume()


    }

}



/////////// LODING JSON DATA //////////////

func parseJSON(jsonData:AnyObject)
{

    if let newsData = jsonData as? [[NSObject:AnyObject]]
    {

        var news:News


        for s in newsData {

            news = News()


            if let sId:AnyObject = s["NewsID"]
            {

                if let NewsID = sId as? String

                {
                    print("News id = \(NewsID)")

                }

            }


            if let sn:AnyObject = s["newsName"]
            {

                if let newsName = sn as? String

                {

                    news.newsName = newsName
                    //println("Store id = \(storeName)")

                }

            }

            if let sn:AnyObject = s["newsDate"]
            {

                if let newsDate = sn as? String

                {

                    news.newsDate = newsDate
                    //println("Store id = \(storeName)")

                }

            }


            if let sn:AnyObject = s["newsIcon"]
            {

                if let newsIcon = sn as? String

                {

                    news.newsImageName = newsIcon
                    //println("News Icon = \(newsIcon)")

                }

            }


            if let sn:AnyObject = s["newsDesc"]
            {

                if let newsIcon = sn as? String

                {

                    news.newsDesc = newsIcon

                }

            }


         newsList += [news]


        }


        NSOperationQueue.mainQueue().addOperationWithBlock(){

            UIApplication.sharedApplication().networkActivityIndicatorVisible = false
            self.tableView.reloadData()
        }    
    }  
}


/////////// LODING IMAGES FROM JSON DATA //////////////

func loadImages(news:News, indexPath:NSIndexPath)
{

    let urlString = news.newsImageName


    let config = NSURLSessionConfiguration.defaultSessionConfiguration()
    let session = NSURLSession(configuration: config, delegate:nil, delegateQueue: nil)


    if let url = NSURL(string: urlString)
    { 
        let request = NSURLRequest(URL: url)

        let taskData = session.dataTaskWithRequest(request, completionHandler: {

            (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in


            if (data != nil)
            {

                news.newsImage = data!
                let image = UIImage(data: data!)

                dispatch_async(dispatch_get_main_queue(),{

                    if let cell = self.tableView.cellForRowAtIndexPath(indexPath) as? NewsStrings {
                        cell.imgvImage.image = image
                    }
                })



            } else

            {


            }

        })

        taskData.resume()   
    }   
    }  

    }

您可以在表视图中添加拉动刷新,如下代码所示

var refreshControl = UIRefreshControl()
考虑到你的负载

self.refreshControl.addTarget(self, action: Selector("loadJSONDATA"), forControlEvents: UIControlEvents.ValueChanged)
self.addSubview(self.refreshControl) // OR self.myTable?.addSubview(self.refreshControl)
然后在self.parseJSON(新闻)后面添加这一行


这将对您完全有帮助。:)

您可以在表视图中添加pull来刷新,如下代码所示

var refreshControl = UIRefreshControl()
考虑到你的负载

self.refreshControl.addTarget(self, action: Selector("loadJSONDATA"), forControlEvents: UIControlEvents.ValueChanged)
self.addSubview(self.refreshControl) // OR self.myTable?.addSubview(self.refreshControl)
然后在self.parseJSON(新闻)后面添加这一行


这将对您完全有帮助。:)

我有办法让它工作,这就是我的viewDidLoad上的内容:

 self.refreshControl?.addTarget(self, action: #selector(NewsList.handleRefresh(_:)), forControlEvents: UIControlEvents.ValueChanged)
HandlerRefresh的功能包括:

func handleRefresh(refreshControl: UIRefreshControl) {

newsList.removeAll() //<-This clear the whole tableview(labels, images,ect...)making table view blank

if self.refreshControl!.refreshing
{
    self.loadRecords()  //<-Reloads All data & labels
    self.refreshControl!.endRefreshing()
}
 }
func handleRefresh(刷新控件:UIRefreshControl){

newsList.removeAll()//我有办法让它工作,这是我的viewDidLoad上的内容:

 self.refreshControl?.addTarget(self, action: #selector(NewsList.handleRefresh(_:)), forControlEvents: UIControlEvents.ValueChanged)
HandlerRefresh的功能包括:

func handleRefresh(refreshControl: UIRefreshControl) {

newsList.removeAll() //<-This clear the whole tableview(labels, images,ect...)making table view blank

if self.refreshControl!.refreshing
{
    self.loadRecords()  //<-Reloads All data & labels
    self.refreshControl!.endRefreshing()
}
 }
func handleRefresh(刷新控件:UIRefreshControl){

newsList.removeAll()//我已经试过了,但是当我在我的服务器上添加或更改PHP文件时,表单元格标签和图像sill不会刷新。您是否使用断点进行检查?检查编译器是否经历了一些类似于重新加载表视图和其他的过程。我已经试过了,但是当我添加或更改PHP文件时,表单元格标签和图像sill不会刷新对我的服务器上的PHP文件进行更改是否使用断点进行检查?检查编译器是否执行了类似于重新加载表视图之类的操作