2016-07-31 5 views
-1

Ich habe eine SWRevealViewController-Anwendung. Ich habe erfolglos versucht, die Hintergrundfarbe mit self.view.backgroundColor zu setzen. Das Beispiel, das ich unten zeige, ist ein UIViewController, der eine tableView mit einer leeren UIView() - Fußzeile enthält, um die tableView zu beenden, wenn sie fertig ist. Ich versuche, die Hintergrundfarbe zu setzen, um den restlichen Raum zu füllen. Mein Code unten.Self.view.backgroundColor funktioniert nicht

import UIKit 

class NewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSXMLParserDelegate { 
    @IBOutlet weak var tables: UITableView! 

    var parser: NSXMLParser = NSXMLParser() 
    var info: [newsarticle] = [] 
    var postTitle: String = String() 
    var postDesc: String = String() 
    var eName: String = String() 
    var index: Int = Int() 
    /* 
    // Only override drawRect: if you perform custom drawing. 
    // An empty implementation adversely affects performance during animation. 
    override func drawRect(rect: CGRect) { 
    // Drawing code 
    } 
    */ 
    var refreshControl: UIRefreshControl! 
    override func viewDidLoad() { 
    let navicon = UIButton(type: UIButtonType.System) 
    navicon.setImage(defaultMenuImage(), forState: UIControlState.Normal) 
    navicon.frame = CGRectMake(0, 0, 30, 30) 
    let menu = UIBarButtonItem(customView: navicon) 
    self.navigationItem.leftBarButtonItem = menu 
    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
    navicon.addTarget(self.revealViewController(), action: #selector(SWRevealViewController.revealToggle(_:)), forControlEvents: .TouchUpInside) 
     let url:NSURL = NSURL(string: "http://brrsd.k12.nj.us/rss/News.xml")! 
     parser = NSXMLParser(contentsOfURL: url)! 
     parser.delegate = self 
     parser.parse() 
    refreshControl = UIRefreshControl() 
    refreshControl.addTarget(self, action: #selector(NewController.refresh(_:)), forControlEvents: UIControlEvents.ValueChanged) 
    tables.separatorColor = UIColor.init(red: 217/255, green: 180/255, blue: 74/255, alpha: 1) 
    tables.addSubview(refreshControl) 
    //background.frame = self.view.frame 
    tables.tableFooterView = UIView() 
    self.view.backgroundColor = UIColor.init(red: 241/255, green: 241/255, blue: 242/255, alpha: 1)self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
    } 
    func refresh(sender: AnyObject) 
    { 
     info = [newsarticle]() 
     let url:NSURL = NSURL(string: "http://brrsd.k12.nj.us/rss/News.xml")! 
     parser = NSXMLParser(contentsOfURL: url)! 
     parser.delegate = self 
     parser.parse() 
     tables.reloadData() 
     refreshControl.endRefreshing() 
    } 
    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return 60; 
    } 
    func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI namespaceURI: String?, qualifiedName qualifiedName: String?, attributes attributeDict: [String : String]) 
    { 
     eName = elementName 
     if elementName == "item" { 
      postTitle = String() 
      postDesc = String() 
     } 
    } 
    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     // #warning Incomplete implementation, return the number of sections 
     return 1 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     // #warning Incomplete implementation, return the number of rows 
     return info.count 
    } 
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell: UITableViewCell 
     if let reusedCell = tableView.dequeueReusableCellWithIdentifier("Cell") { 
      cell = reusedCell 
     } else { 
      cell = UITableViewCell(style: .Default, reuseIdentifier: "Cell") 
     } 
     let news: newsarticle = info[indexPath.row] 
     if let label = cell.textLabel { 
      label.text = news.title 
     } 
     cell.backgroundColor = UIColor.init(red: 241/255, green: 241/255, blue: 242/255, alpha: 1) 
     cell.textLabel!.font = UIFont(name:"Bodoni 72", size: 16) 
     cell.textLabel!.textColor = UIColor.init(red: 25/255, green: 149/255, blue: 173/255, alpha: 1) 
     return cell } 

    func parser(parser: NSXMLParser, foundCharacters string: String) { 
     let data = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 
     if (!data.isEmpty) { 
      if eName == "title" { 
       postTitle += data 
      } else if eName == "description" { 
       postDesc += data 
      } 
     } 
    } 

    func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { 
     if elementName == "item" { 
      let newsart: newsarticle = newsarticle() 
      newsart.title = postTitle 
      newsart.description = postDesc 
      info.append(newsart) 
     } 
    } 
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     index = indexPath.row 
     tables.deselectRowAtIndexPath(indexPath, animated:true) 
      performSegueWithIdentifier("NewsTransfer", sender:self) 
    } 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     let Destination: FullNews = segue.destinationViewController as! FullNews 
     Destination.info = info[index] 

    } 




    /* 
    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 
    */ 

} 
+0

Der von Ihnen angegebene Code _never_ versucht, 's zu setzen elf.view.backgroundColor', Ihre Frage ergibt also keinen Sinn. – matt

+0

Entschuldigung, ich habe es wieder bearbeitet. Ich hatte es früher aus Frustration herausgenommen und versucht, andere Lösungen zu finden. – Praveen

Antwort

0

In Ihrer viewDidLoad Methode, Sie haben:

tables.tableFooterView = UIView() 

diesen Versuchen Sie stattdessen:

tables.tableFooterView = UIView(frame: CGRectZero) 

Auch für die nächste Zeile (die Hintergrundfarbe), versuchen Sie dies:

self.view.window!.backgroundColor = UIColor(red: 241/255, green: 241/255, blue: 242/255, alpha: 1.0) 
+0

Ich bekomme eine Breakpoint-Ausnahme, wenn ich das tue. Es scheint, dass Fenster zu diesem Zeitpunkt null ist. – Praveen

Verwandte Themen