2016-03-20 3 views
2

Ich habe eine UITableView in meiner App und ich möchte dort eine UILabel präsentieren, wenn es keinen Inhalt gibt. Bisher habe ich so mache:Ich habe ein UILabel, das nur sichtbar ist, wenn mein UITableView leer ist. Wie kann ich den Text dieses Labels in Swift zentrieren?

@IBOutlet var tview: UITableView! 

var emptyLabel = UILabel(frame: CGRectMake(0, 10, 100, 100)) 

override func viewDidLoad(){ 

    let refreshControl = UIRefreshControl() 

    refreshControl.addTarget(self, action: "refresh:", forControlEvents: .ValueChanged) 
    refreshControl.attributedTitle = NSAttributedString(string: "last updated on \(NSDate())") 

    tview.separatorStyle = UITableViewCellSeparatorStyle.None 
    tview.addSubview(refreshControl) 


    emptyLabel.numberOfLines = 0 
    emptyLabel.text = "There is no content in this table for now. Please pull down the list to refresh and something should appear" 
    emptyLabel.font = emptyLabel.font.fontWithSize(10) 
    tview.backgroundView = emptyLabel 
} 

Aber wenn ich so tun, ich habe folgendes Ergebnis:

enter image description here

und anstelle der Ausrichtung nach links Ich möchte das zum Zentrum Text, so dass es so etwas wie folgt aussieht:

 There is no content in this table for now. Please pull down the 
       list to refresh and something should appear 

auch zur Zeit ist es vertikal zentriert - ist es eine Möglichkeit, diese Botschaft setzt sich in 1/3 des Bildschirms sagt von t er top?

====== EDIT

@ Md.Muzahidul Islam dies, wie ich das Etikett vorhanden, wenn die Tabelle leer ist:

override func tableView(tview: UITableView, numberOfRowsInSection section: Int) -> Int { 

    if self.items.count == 0{ 
     self.emptyLabel.hidden = false 
     return 0 
    } else { 
     self.emptyLabel.hidden = true 
    return self.items.count; 
    } 
} 
+0

Wenn das Datenarray Zählwert Null ist, dann in Rücklauf 1 für die Datenquelle Methode ‚numberOfCellForTheSection‘ und Ihre emptyLabel als subview von Zellinhaltsansicht fügt in Ihre cellForIndexpath-Datenquellenmethode. – iMuzahid

+0

@ Md.MuzahidulIslam bitte überprüfe das Update auf meine Frage - so zeige ich das Label bisher an. Kannst du eine Antwort schreiben, wie könnte ich es auf deine Art machen? – user3766930

+0

Haben Sie 'emptyLabel.textAlignment = NSTextAlignment.Center' überprüft? –

Antwort

1

Sie dies erreichen können:

override func viewDidLoad() 
{ 
    // Other codes 
    emptyLabel    = UILabel(frame: CGRectMake(0, 0, tview.bounds.size.width, view.bounds.size.height)) 
    emptyLabel.textAlignment = NSTextAlignment.Center 
    emptyLabel.numberOfLines = 0 
    emptyLabel.text   = "There is no content in this table for now. Please pull down the list to refresh and something should appear" 
    emptyLabel.font   = emptyLabel.font.fontWithSize(10) 
    tview.backgroundView  = emptyLabel 
} 

Sie können mehr über sie here

0

Swift3.0 lesen

Ich hoffe es Server Ihren Zweck ...... In Ihrem UITableViewController.

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    if searchController.isActive && searchController.searchBar.text != "" { 
     if filteredContacts.count > 0 { 
      self.tableView.backgroundView = .none; 
      return filteredContacts.count 
     } else { 
      Helper.EmptyMessage(message: ConstantMap.NO_CONTACT_FOUND, viewController: self) 
      return 0 
     } 
    } else { 
     if contacts.count > 0 { 
      self.tableView.backgroundView = .none; 
      return contacts.count 
     } else { 
      Helper.EmptyMessage(message: ConstantMap.NO_CONTACT_FOUND, viewController: self) 
      return 0 
     } 
    } 
} 

Helper Klasse mit Funktion:

/* Description: This function generate alert dialog for empty message by passing message and 
      associated viewcontroller for that function 
      - Parameters: 
      - message: message that require for empty alert message 
      - viewController: selected viewcontroller at that time 
     */ 
     static func EmptyMessage(message:String, viewController:UITableViewController) { 
      let messageLabel = UILabel(frame: CGRect(x: 0, y: 0, width: viewController.view.bounds.size.width, height: viewController.view.bounds.size.height)) 
      messageLabel.text = message 
      let bubbleColor = UIColor(red: CGFloat(57)/255, green: CGFloat(81)/255, blue: CGFloat(104)/255, alpha :1) 

      messageLabel.textColor = bubbleColor 
      messageLabel.numberOfLines = 0; 
      messageLabel.textAlignment = .center; 
      messageLabel.font = UIFont(name: "TrebuchetMS", size: 18) 
      messageLabel.sizeToFit() 

      viewController.tableView.backgroundView = messageLabel; 
      viewController.tableView.separatorStyle = .none; 
     }