How do I make my iOS7 UITableViewController NOT appear under the top status bar?

前端 未结 13 2113
旧巷少年郎
旧巷少年郎 2020-12-13 14:04

My root controller is a TabBarController (tabbed application). One of the tabs, is a UITableViewController. When I switch to that and scroll through the items, they show up

13条回答
  •  孤街浪徒
    2020-12-13 14:25

    Let's say your Outline view, or Storyboard, is a Tab Bar Controller that currently has a Table View Controller. When you run the app, your table view cells are running under the status bar that seems to have a transparent background. This sucks!

    If you spent hours trying everything you could find on StackOverflow to no avail, felt like maybe it really was time to consider a new career and were preparing to dial 1-800-LUV-TRUK or 1-800-SHT-KIKR, give yourself a pat on the back, open up whatever elixir you drink in times such as this, because it's not your fault. Really. Travis is absolutely right that no amount of code in viewDidLoad, viewWillAppear, or viewDidAppear or button selecting/deselecting in IB will help in this situation.

    Travis' solution above will certainly work, but it's a bit long, there's copying and pasting of code, I have a short attention span such that an episode of Bugs Bunny feels like a full-length movie to me, so I just know that I'll screw-up anything that complicated. But, hey, your mileage may, nay likely will, vary. Anyhoo...

    In Xcode 7.3 for an app running iOS 9 (I assume 7 and 8 but I don't know this for certain and am currently too lazy to check) there is an easier way that doesn't require one to write any code. And it's done all within Xcode's Interface Builder.

    (Caveat: Sorry if any of the terms aren't accurate. Please let me know where I was mistaken and I'll correct any mislabeling.)

    1. Go to the Utilities area of Interface Builder and select the Object library from the library pane.

    2. Select a Navigation View Controller object and drag it into your Storyboard scene. You'll notice that two scene items appear while you're dragging–these are a Navigation Controller Scene and a Table View Controller Scene.

    3. Delete the duplicate Table View Controller Scene that came-along with your Navigation Controller Scene.

    4. Select the relationship connection between your Tab Bar Controller and your Table View Controller and hit "Delete".

    5. Reposition the Navigation Controller and your Table View Controller the way you want in your storyboard.

    6. Control-drag from your Tab Bar Controller Scene to the Navigation Controller Scene and select "Relationship Segue, view controller".

    7. Control-drag from your Navigation Controller Scene to your Table View Controller Scene and select "Relationship Segue, root view controller".

    8. Lastly, in the Utilities' Objects library, drag a Navigation Item object into your Table View Controller Scene's Table View.

    Now when you run your app, you will have a navigation bar and your table view cells will no longer appear under a transparent status bar.

    Hope this helps.

提交回复
热议问题