1 Reply
      Latest reply on Mar 16, 2019 1:32 AM by Claude31
      TechyGod Level 1 Level 1 (10 points)

        Ok so i've implimented a UITable view to load an RSS feed, the problem is that im unable to add a Navigation bar floating over the TableView like i am doing in other views. can anyone guide me in this area? i'm also wanting to avoid doing things that cause more prosessing or bugs on the users end.

         

        import UIKit
        import SafariServices
        import TIFeedParser
        import Alamofire
        
        class Listen: UITableViewController {
            @IBOutlet weak var WOLMenu: UIBarButtonItem!
            
            var items : Array = []
            var entries : Array = []
            
            override func viewDidLoad() {
                super.viewDidLoad()
                
                loadRSS()
                loadAtom()
                
                WOLMenu.target = self.revealViewController()
                WOLMenu.action = #selector(SWRevealViewController.revealToggle(_:))
                self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
        
            }
            
            override func didReceiveMemoryWarning() {
                super.didReceiveMemoryWarning()
            }
            
            override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
                return items.count
            }
            
            override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell", for: indexPath)
                
                let item:Item = self.items[indexPath.row]
                cell.textLabel?.text = item.title
                cell.detailTextLabel?.text = self.pubDateStringFromDate(item.pubDate! as Date)
                
                return cell
            }
            
            override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
                
                let item = self.items[indexPath.row]
                
                let url:URL = URL(string: item.link!)!
                let safariViewController = SFSafariViewController(url: url, entersReaderIfAvailable: true)
                present(safariViewController, animated: true, completion: nil)
            }
            
            func loadRSS() {
                
                let feedUrlString:String = "https://vimeo.com/hidden/videos/rss"
                
                Alamofire.request(feedUrlString).response { response in
                    
                    if let data = response.data, let _ = String(data: data, encoding: .utf8) {
                        
                        TIFeedParser.parseRSS(xmlData: data as NSData, completionHandler: {(isSuccess, channel, error) -> Void in
                            
                            if (isSuccess) {
                                self.items = channel!.items!
                                self.tableView.reloadData()
                            }
                            
                            if (response.error != nil) {
                                print((response.error?.localizedDescription)! as String)
                            }
                        })
                    }
                }
                
            }
            
            func loadAtom() {
                
                let feedUrlString:String = "https://vimeo.com/hidden/videos/rss"
                
                Alamofire.request(feedUrlString).response { response in
                    
                    if let data = response.data, let _ = String(data: data, encoding: .utf8) {
                        
                        TIFeedParser.parseAtom(xmlData: data as NSData, completionHandler: {(isSuccess, feed, error) -> Void in
                            
                            if (isSuccess) {
                                self.entries = feed!.entries!
                                self.tableView.reloadData()
                            }
                            
                            if (error != nil) {
                                print((error?.localizedDescription)! as String)
                            }
                        })
                    }
                }
            }
            
            func pubDateStringFromDate(_ pubDate:Date)->String {
                let format = DateFormatter()
                format.dateFormat = "yyyy/M/d HH:mm"
                
                let pubDateString = format.string(from: pubDate)
                return pubDateString
            }
            
            override var prefersStatusBarHidden: Bool {
                return true
            }
            
        
        }
        https://ibb.co/8g8Z2k9

        https://ibb.co/8g8Z2k9  storyboard view

         

        the current code runs well, however the navigation bar does not float. So what should i impliment to acheave this, how much code will need to change (i assume ill be changing the structure sadly)