Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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
Ios 拉动以刷新ViewController和tableView_Ios_Swift_Pull To Refresh - Fatal编程技术网

Ios 拉动以刷新ViewController和tableView

Ios 拉动以刷新ViewController和tableView,ios,swift,pull-to-refresh,Ios,Swift,Pull To Refresh,我想拉刷新我的RSS提要新闻应用程序。我正在使用视图控制器和UITableView。我应该如何在视图控制器上执行?我们应该补充什么?我的密码在这里 import UIKit class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate,XMLParserDelegate { @IBOutlet weak var tblView: UITableView! var parser = XMLPa

我想拉刷新我的RSS提要新闻应用程序。我正在使用视图控制器和
UITableView
。我应该如何在视图控制器上执行?我们应该补充什么?我的密码在这里

import UIKit

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate,XMLParserDelegate { 
@IBOutlet weak var tblView: UITableView!

var parser = XMLParser()
var news = NSMutableArray()
var elements = NSMutableDictionary()
var element = NSString()
var title1 = NSMutableString()
var link = NSMutableString()
var desc = NSMutableString()


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    parsingDataFromURL()
    addNavBarImage()
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}




func parsingDataFromURL()
{
    news = []
    parser = XMLParser(contentsOf: URL(string: "feedurl")!)!
    parser.delegate = self
    parser.parse()
    tblView.reloadData()
}


func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {

    element = elementName as NSString

    if(elementName as NSString) .isEqual(to: "item")
    {
        elements = NSMutableDictionary()
        elements = [:]
        title1 = NSMutableString()
        title1 = " "
        link = NSMutableString()
        link = " "
    }
}

func parser(_ parser: XMLParser, foundCharacters string: String) {

    if element .isEqual(to: "title")
    {
        title1.append(string)
    }
    else if element.isEqual(to: "description")
    {
        desc.append(string)
    }
    else if element.isEqual(to: "link")
    {
        link.append(string)
    }
}


func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
    if (elementName as NSString) .isEqual(to: "item")
    {
        if !title1 .isEqual(nil)

        {
            elements.setObject(title1, forKey: "title" as NSCopying)
        }

        if !link .isEqual(nil)
        {
            elements.setObject(link, forKey: "link" as NSCopying)
        }
        if !desc.isEqual(nil)
        {
            elements.setObject(desc, forKey: "description" as NSCopying)
        }


        news.add(elements)
    }
}


internal func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    return news.count
}

internal func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    var cell = tableView.dequeueReusableCell(withIdentifier: "myCell")! as UITableViewCell

    if (cell.isEqual(NSNull.self))
    {
        cell = Bundle.main.loadNibNamed("myCell", owner: self, options: nil)?[0] as! UITableViewCell
    }

    cell.textLabel?.text = (news.object(at: indexPath.row) as AnyObject).value(forKey: "title") as! NSString as String

    cell.detailTextLabel?.text = (news.object(at: indexPath.row) as AnyObject).value(forKey: "link") as! NSString as String

    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

{
    tableView.deselectRow(at: indexPath, animated: true)
    let newsdetailVC = storyboard?.instantiateViewController(withIdentifier: "NewsDetailViewController") as! NewsDetailViewController
    newsdetailVC.selectedTitle = (news.object(at: indexPath.row) as AnyObject).value(forKey: "title") as! NSString as String
    newsdetailVC.selectedUrl   = (news.object(at: indexPath.row) as AnyObject).value(forKey: "link") as! NSString as String

    self.navigationController?.pushViewController(newsdetailVC, animated: true)
}
}
试试这个 编辑

var refreshControl: UIRefreshControl!

override func viewDidLoad() {
   super.viewDidLoad()

   refreshControl = UIRefreshControl()
   refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
   refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
   tableView.addSubview(refreshControl) // not required when using UITableViewController
}

func refresh(sender:AnyObject) {
   // Code to refresh table view  
      parsingDataFromURL()
      tblView.reloadData()
}

如果我没有弄错,您希望在加载所有数据后刷新表视图。如果是这种情况,您需要
parserDidEndDocument

func parserDidEndDocument(parser: NSXMLParser){
    table?.reloadData()
}

您可以查看和/或进行拉刷新

您可以实现
UIScrollViewDelegate
方法
scrollViewDidScroll
,如果
contentOffset.y
大于某个阈值,然后刷新表视图您的UIViewController是否只包含一个UITableView而不包含任何其他元素?刷新表视图的//代码是什么?是!它不工作吗?是的,不工作。不,我想拉刷新。在我的答案中有链接,这可能是你想要的。