Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the difference between a View and a ViewController? [duplicate]

Tags:

swift

Coming to Swift from Delphi, I thought the View represented an app's GUI and the storyboard was a visual representation of the View's underlying code. The ViewController was the one and only object the View interacted with. When a popular tutorial says

In the old days developers used to create a separate interface file for the design of each view controller.

I'm thinking the "separate interface file" was the View file. But as I learn more, I'm getting confused. Beneath a screenshot of an empty Main.storyboard from a new application, the text says

The official storyboard terminology for a view controller is "scene," but you can use the terms interchangeably. The scene is what represents a view controller in the storyboard ... Here you see a single view controller containing an empty view.

So I'm seeing a "single view controller," not a view?? Confusion mounts when I note any views(?) displayed on a storyboard are called "View Controllers" in Swift.

So, what's the difference between a View and ViewController? How is a storyboard related? And what object "owns" something like a segue, which exists outside my (flawed) understanding of these concepts?

like image 566
Al C Avatar asked Aug 04 '15 16:08

Al C


People also ask

Is a Viewcontroller a view?

A view controller manages a single root view, which may itself contain any number of subviews. User interactions with that view hierarchy are handled by your view controller, which coordinates with other objects of your app as needed. Every app has at least one view controller whose content fills the main window.

What does a Viewcontroller do?

A view controller acts as an intermediary between the views it manages and the data of your app. The methods and properties of the UIViewController class let you manage the visual presentation of your app.

What is a view in iOS?

Overview. Views and controls are the visual building blocks of your app's user interface. Use them to draw and organize your app's content onscreen. Views can host other views.

Is a Navigationcontroller a Viewcontroller?

Bottom line, a navigation controller actually is a view controller, but it just happens to be one that presents and navigates between other view controllers.


1 Answers

Take a look at this post - What is the difference between a View and a View Controller?

This described it pretty well for me.

If you don't want to go to the link, here is a great description of the difference between a view and a view controller by Alex Wayne:

A view is an object that is drawn to the screen. It may also contain other views (subviews) that are inside it and move with it. Views can get touch events and change their visual state in response. Views are dumb, and do not know about the structure of your application, and are simply told to display themselves in some state.

A view controller is not drawable to the screen directly, it manages a group of view objects. View controllers usually have a single view with many subviews. The view controller manages the state of these views. A view controller is smart, and has knowledge of your application's inner workings. It tells the dumb view objects what to do and how to show themselves.

A view controller is the glue between your overall application and the screen. It controls the views that it owns according to the logic of your application.

like image 148
Stefan DeClerck Avatar answered Sep 23 '22 02:09

Stefan DeClerck