智能文章系统实战-iOS文章客户端(9)

admin 发布于:2018-6-21 22:24  有 2088 人浏览,获得评论 0 条 标签: swift 

1. 文章实体类

class Item{
    
    var title="";
    var url=""
    
}


2.列表程序

import UIKit

class ListViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

    var dataSource:[Item]=[]
    var tv:UITableView?
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor=UIColor.white
        
        //列表
        tv=UITableView(frame:CGRect(x: 0, y: 20, width: self.view.frame.size.width, height: self.view.frame.size.height-50))
        tv!.register(UITableViewCell.self, forCellReuseIdentifier: "NewsCell")
        tv!.delegate=self;
        tv!.dataSource=self;
        
        self.view.addSubview(tv!)
        
        self.loadJsonData()

    }
    
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1;
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataSource.count;
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        let cell:UITableViewCell=tv!.dequeueReusableCell(withIdentifier: "NewsCell", for: indexPath)
        
        cell.accessoryType=UITableViewCellAccessoryType.disclosureIndicator
        cell.textLabel?.text=dataSource[indexPath.row].title
        
        return cell;
    }
    
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        
        tv!.deselectRow(at: indexPath, animated: true)
        
        
        let itemTV=ItemViewController()
        itemTV.tit=self.dataSource[indexPath.row].title
        itemTV.url=self.dataSource[indexPath.row].url
        self.present(itemTV, animated: true, completion: nil)
        
        
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
    }
    

    
    
    func loadJsonData()
    {
        
        
        let url="http://news.demo.com/app.php"
        
        let nsurl = URL(string:url)
        let request = NSMutableURLRequest.init(url:nsurl!)
        
        
        let session = URLSession.shared
        let dataTask = session.dataTask(with: request as URLRequest) { (data, response, error) -> Void in
            
            
            if (error == nil) {
                
                do{
                    let responseData:NSDictionary = try JSONSerialization.jsonObject(with:data!, options:JSONSerialization.ReadingOptions.allowFragments) as! NSDictionary
                    let jsonArr=responseData["data"] as! [[String: Any]];
                    for json in jsonArr {
                        let N1=Item()
                        N1.title=json["title"] as! String
                        N1.url="http://news.demo.com/h5.php?action=show&id=\(json["id"] as! String)"
                        self.dataSource.append(N1)
                    }
                    
                    DispatchQueue.main.async{
                        self.tv!.reloadData();
                    }
                    
                }catch{
                    
                }
            }
        }
        
        dataTask.resume()
        
    }
    


}



3.详细页程序


import UIKit

class ItemViewController: UIViewController {

    var tit:String="";
    var url:String="";
    var webview:UIWebView?
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

        
        //关闭按钮
        let btn=UIButton(frame: CGRect(x: 0, y: 20, width: self.view.bounds.size.width, height: 20))
        
        btn.setTitle("返回", for: .normal)
        btn.setTitleColor(UIColor.red, for: UIControlState.normal)
        btn.addTarget(self, action: #selector(btnClick(_:)), for: .touchUpInside)
        self.view.addSubview(btn)
        
        
        //WEB浏览器
        self.view.backgroundColor=UIColor.white
        let webview=UIWebView(frame: self.view.bounds)
        webview.frame.origin.y=45;
        let urlobj = URL(string:self.url)
        let request = URLRequest(url:urlobj!)
        webview.loadRequest(request);
        self.view.addSubview(webview)
        
        
    }
    
    func btnClick(_ sender:UIButton)
    {
        self.dismiss(animated: true, completion: nil)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
       
    }
    

}