How can I add a top margin to my tableview in Xcode?

Larry Navarro picture Larry Navarro · Jun 6, 2015 · Viewed 16.3k times · Source

I'm trying to add an image on the very top of the first cell of a table view. How can i make the table view have a top margin? Right now, the image is just overlapping the tableview. I am trying to just get the table view to come down a little bit. I do not want to make it smaller or something like that. I just want to add a button to the top of the tableview.

//
//  usersVC.swift
//  CaastRun
//
//  Created by Computer on 5/23/15.
//  Copyright (c) 2015 Caast. All rights reserved.
//

import UIKit

class usersVC: UIViewController, UITableViewDataSource, UITableViewDelegate {



    @IBOutlet weak var resultsTable: UITableView!

    var resultsNameArray = [String]()
    var resultsUserNameArray = [String]()
    var resultsImageFiles = [PFFile]()

    override func viewDidLoad() {
        super.viewDidLoad()
        let theWidth = view.frame.size.width
        let theHeight = view.frame.size.height
        resultsTable.frame = CGRectMake(0, 0, theWidth, theHeight)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func viewDidAppear(animated: Bool) {


        resultsNameArray.removeAll(keepCapacity: false)
        resultsUserNameArray.removeAll(keepCapacity: false)
        resultsImageFiles.removeAll(keepCapacity: false)

        var query = PFUser.query()

        query!.whereKey("username", notEqualTo: PFUser.currentUser()!.username!)

        query!.findObjectsInBackgroundWithBlock {
            (objects:[AnyObject]?, error:NSError?) -> Void in

            if error == nil {

                for object in objects! {

                    self.resultsNameArray.append(object.objectForKey("profileName") as! String)
                    self.resultsImageFiles.append(object.objectForKey("photo") as! PFFile)
                    self.resultsUserNameArray.append(object.objectForKey("username") as! String)

                    self.resultsTable.reloadData()


                }

            }

        }

    }


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

        return resultsNameArray.count

    }

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

        return 64

    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        var cell:usersCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! usersCell

        cell.profileLbl.text = self.resultsNameArray[indexPath.row]
        cell.usernameLbl.text = self.resultsUserNameArray[indexPath.row]

        var query = PFQuery(className: "follow")

        query.whereKey("user", equalTo: PFUser.currentUser()!.username!)
        query.whereKey("userToFollow", equalTo: cell.usernameLbl.text!)

        query.countObjectsInBackgroundWithBlock {
            (count:Int32, error:NSError?) -> Void in

            if error == nil {

                if count == 0 {

                    cell.followBtn.setTitle("Follow", forState: UIControlState.Normal)

                } else {

                    cell.followBtn.setTitle("Following", forState: UIControlState.Normal)
                }

            }

        }


        self.resultsImageFiles[indexPath.row].getDataInBackgroundWithBlock {
            (imageData:NSData?, error:NSError?) -> Void in

            if error == nil {

                let image = UIImage(data: imageData!)
                cell.imgView.image = image

            }

        }

        return cell

    }

    @IBOutlet weak var searchText: UITextField!


    @IBAction func searchButton(sender: AnyObject) {
        resultsNameArray.removeAll(keepCapacity: false)

        resultsUserNameArray.removeAll(keepCapacity: false)

        resultsImageFiles.removeAll(keepCapacity: false)

        var query = PFUser.query()

        query!.whereKey("username", notEqualTo: PFUser.currentUser()!.username!)

        query!.whereKey("profileName", containsString: self.searchText.text)

        query!.findObjectsInBackgroundWithBlock {

            (objects:[AnyObject]?, error:NSError?) -> Void in

            if error == nil {

                for object in objects! {

                    self.resultsNameArray.append(object.objectForKey("profileName") as! String)

                    self.resultsImageFiles.append(object.objectForKey("photo") as! PFFile)

                    self.resultsUserNameArray.append(object.objectForKey("username") as! String)

                    self.resultsTable.reloadData()

                }



            }

        }
    }


}

Answer

Icaro picture Icaro · Jun 6, 2015

I am not sure if I understand your question, if you are trying to have a margin between your table and the view try this:

Swift 3

self.tableView.contentInset = UIEdgeInsets(top: 20,left: 0,bottom: 0,right: 0)

Swift 2

self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);