Sami Udakara
Sami Udakara

Reputation: 165

How to move a table content to the top of the screen?

I am still new to iOS and Swift and I am using Swift4 and Xcode9 to edit an iOS project which is made with a prior versions of Xcode and Swift (Xcode8 and Swift3). In the project there is a TableViewController used. So the problem is when I open the project in Xcode9 and run it, it shows some space on the top. I tried changing y values, but didn't work. My questions are,

  1. How to solve the upper mentioned problem. (There is a question like this in Stack Overflow already. But it's not due to different Xcode version. But I even tried all the suggestions in the answers. But none of them worked for me.)

  2. When there is a text label or something on the top of the table content, I can remove that space, from the top, but it goes to in between that label and the table added. And the label is unable to get a click action or something when it's moved to the top. How to solve that?

Any suggestion/ answer will be highly appreciated. Thank you!

Upvotes: 1

Views: 527

Answers (3)

Vipin
Vipin

Reputation: 104

tableView.setContentOffset(CGPoint.zero, animated: true)

this code will move

Upvotes: 1

gadu
gadu

Reputation: 1826

Ok I'm going to attempt to answer your question but I wasn't totally positive since you didn't include any code or screenshots.

Firstly. If you mean that there seems to be a gap between where the tableView starts and where the first cell is displayed, this is correct. You can fix that by doing:

tableView.contentInset = .zero

this means that any content inside the tableView starts goes all the way to the edges.

Now for the label receiving touches. You want to look at user interaction enabled values on the storyboard:

enter image description here

Whenever you have views that stack on top of each other, the view UNDER will not receive touches if the view on top has user interaction enabled. If you want a touch to bleed through another view you either can

1) avoid the issue by not stacking views on top of each other (often unavoidable, like putting a label on a view and wanting the background view to do something)

2) turn off the user interaction on the view on top so the view on bottom gets the touch

Upvotes: 1

Rajan Maheshwari
Rajan Maheshwari

Reputation: 14571

You can try this

 if #available(iOS 11.0, *) {
    yourTableView.contentInsetAdjustmentBehavior = .never
 }

Upvotes: 2

Related Questions