Skip to content

Commit

Permalink
Add Section About Extensions (freeCodeCamp#23428)
Browse files Browse the repository at this point in the history
  • Loading branch information
akbarbmirza authored and RandellDawson committed Oct 29, 2018
1 parent f00f46d commit 14c89f8
Showing 1 changed file with 63 additions and 1 deletion.
64 changes: 63 additions & 1 deletion guide/english/swift/view-controller/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,66 @@ This is an example of what a basic view in Swift looks like.
```
1. Loads view after the controller loads.
2. Overrides the UIViewController class. This is a necessary step for any view controller.
3. Sets background color to white.
3. Sets background color to white.

## Extending View Controllers

Extensions can help keep your code clean when conforming to multiple protocols.

This is an example of how you can add a TableView to a Basic View Controller.

```Swift
import UIKit

class ViewController: UIViewController {
// 1
@IBOutlet weak var tableView: UITableView!

// 2
let data = ["New York, NY", "Los Angeles, CA", "Chicago, IL", "Houston, TX",
"Philadelphia, PA", "Phoenix, AZ", "San Diego, CA", "San Antonio, TX",
"Dallas, TX", "Detroit, MI", "San Jose, CA", "Indianapolis, IN",
"Jacksonville, FL", "San Francisco, CA", "Columbus, OH", "Austin, TX",
"Memphis, TN", "Baltimore, MD", "Charlotte, ND", "Fort Worth, TX"]

override func viewDidLoad() {
super.viewDidLoad()

// 10
tableView.dataSource = self
// 11
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "myCellIdentifier")
}
}

// 3
extension ViewController: UITableViewDataSource {

// 4
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// 5
let cell = tableView.dequeueReusableCell(withIdentifier: "myCellIdentifier", for: indexPath)
// 6
cell.textLabel?.text = data[indexPath.row]
// 7
return cell
}

// 8
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// 9
return data.count
}
}
```
1. Define the outlet for our tableView
2. Define the data that we'll be loading into our tableView
3. Adds extension to ViewController class that conforms to UITableViewDataSource
4. Implement the UITableViewDataSource stubs for required methods - cellForRowAt (defines what goes in a specific cell)
5. Define a cell as a resuable element with the identifier "myCellIdentifier"
6. Provide our cell's textLabel with the referenced data
7. Return that cell
8. Implement the UITableViewDataSource stubs for required methods - numberOfRowsInSection (defines how many rows will be in your tableView)
9. Return the size of our data array
10. Set the tableView's dataSource to self when the view loads
11. register the tableView's cell

0 comments on commit 14c89f8

Please sign in to comment.