рдЫреЛрдЯрд╛ рд╕рд╛ рдкрд░рд┐рдЪрдп
рд╕рднреА 404! рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдИрдУрдПрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдРрдкреНрдкрд▓-рдПрдорд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЕрдиреБрдЪрд┐рдд рдЖрд▓реЛрдЪрдирд╛ рд╣реЛрддреА рд╣реИ, рдЫреЛрдЯреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИрдВ, ViewControllers рд╡рд┐рд╢рд╛рд▓, рдЕрдкрдардиреАрдп рдФрд░ рдЗрддрдиреЗ рдкрд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВредрдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ , рдЕрдкрдиреЗ рд▓рд┐рдП рдЬреАрд╡рди, рдЬрд┐рд╕рдиреЗ 3 рдорд╣реАрдиреЗ рдХреЗ рдмрд╛рдж рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рджреЗрдЦрд╛ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рднреА ViewControllers рдХреЗ рд▓рд┐рдПред рдпрд╣ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ? рд╢реБрд░реБрдЖрддреА рдпрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЬреЛ рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдФрд░ рд╕реБрдВрджрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВредрд╣рд░ рдХреЛрдИ рдХрд╣рд╛рдБ рдбреВрдмрддрд╛ рд╣реИ?
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕рднреА рдХреЗ рдкрд╕рдВрджреАрджрд╛ рдорд╛рдирдХ рд╕реБрдВрджрд░ MVC рдХреЛ рджреЗрдЦреЗрдВред
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдмрд╣реБрдордд рд╕реЗ рдХреНрдпрд╛ рд▓рд╛рдЧреВ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдардВрдбрд╛? рдирд╣реАрдВ! рдЗрд╕рд▓рд┐рдП, рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗредрд╕реМрдВрджрд░реНрдп рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ
рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рдВрдЧрд▓ рд╡реНрдпреВ рдРрдк рдмрдирд╛рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рднрд╛рд╖рд╛ рдЪрдпрди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЛ рд░рдЦрд╛, рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ: рди рддреЛ рдкрд░реАрдХреНрд╖рдг, рди рд╣реА рдХреЛрд░рдбреИрдЯредрдореИрдВ рдПрдХ рджреБрдХрд╛рди рдЦрд┐рдбрд╝рдХреА рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджрд┐рдЦрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдПрдорд╡реАрд╕реА рдХреЗ рд╕рднреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдо рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдореЙрдбрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЗрдВрдЧреЗредрдареАрдХ рд╣реИ, рдПрдХ рдХрд╛рд░реНрдп рд╣реИ, рдПрдХ рдЦрд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рдЕрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реБрдП, рдореИрдВ рд╕рдм рдХреБрдЫ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЦрд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдКрдВрдЧрд╛ рддрд╛рдХрд┐ рдЖрдк рд╕рдордЭ рд╕рдХреЗрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд╣рд╛рдВ рдЭреВрда рдмреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рд╕рдВрд░рдЪрдирд╛ рд╕рдВрд▓рдЧреНрди рдХреА рдЧрдИ рд╣реИ, рддрд╛рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдордп рдмрд░реНрдмрд╛рдж рди рд╣реЛред рд╕реЗрд▓ рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдЖрдИрдбреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ , рдореИрдВрдиреЗ ProductCell рд▓рд┐рдЦрд╛ред
рдЦреВрдмрд╕реВрд░рдд? рдмреЗрд╢рдХ рдпрд╣ рд╕реБрдВрджрд░ рд╣реИред рд╣рдо рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ ...рдХреБрдЫ рдореИрдЬрд┐рдХ рд╕реНрд╡рд┐рдлреНрдЯ
рдЕрдм рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рджреГрд╢реНрдп рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред рд╣рдореЗрдВ рд╕рднреА IBOutlets, рдФрд░ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
import UIKit
class ShopView: UIView{
@IBOutlet weak var tableView: UITableView!
func configure(){
tableView.estimatedRowHeight = 50
tableView.rowHeight = 100
}
}
рдпрд╣ рд╣рдорд╛рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреИрд╕рд╛ рд╣реЛрдЧрд╛, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдирд┐рдореЗрд╢рди рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдмрдЯрди рдХреЗ рд╢реАрд░реНрд╖рдХ рдХреЗ рд╢реАрд░реНрд╖рдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрджрд┐ ... рддреЛ рдЖрджрд┐рдо рд░реВрдк рд╕реЗ рдХрд╣реЗрдВ? рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрд╕ рд▓рд╛рдн рдХрд╛ рдЗрддрдирд╛ рдХрдо рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ?! рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдПрдирд┐рдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: view.hideBorders (рд╕реНрд╡рдпрдВ) рдФрд░ рдпрд╣ рд╡рд╣ рд╣реИ, рдФрд░ рджреГрд╢реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реБрдВрджрд░ рдПрдиреАрдореЗрд╢рди рдмрдирд╛ рджреЗрдЧрд╛ред
func hideBorders(view: UIView){
UIView.animate(withDuration: 0.3,
delay: 0,
options: .curveEaseInOut,
animations: {
self.createViewHeighConstraint.constant = view.bounds.height * 0.6
self.editButton.layer.cornerRadius = 20
self.postView.layer.shadowOpacity = 0
self.postView.layer.cornerRadius = 0
view.layoutIfNeeded()
}, completion: nil)
}
рдЖрдЧ! рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд╡рд╛рдкрд╕, рдореЙрдбрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордпред рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд╛рд▓ рд╣реЛрдЧрд╛, рдФрд░ рдЙрдирдХреЗ рд╕рдореВрд╣ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
import Foundation
public struct Product {
public let name: String
}
public struct ProductGroup {
public let products: [Product]
public let title: String
}
extension ProductGroup{
public static func vegetables() -> ProductGroup{
let products = [
Product(name: ""),
Product(name: ""),
Product(name: "")
]
return ProductGroup(products: products, title: "")
}
}
рдорд╣рд╛рди, рд╣рдорд╛рд░рд╛ рдореЙрдбрд▓ рддреИрдпрд╛рд░ рд╣реИ, рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рдЖрдЗрдП рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЕрдкрдиреА рджреЛ рдореБрдЦреНрдп рд╕рдВрд╕реНрдерд╛рдУрдВ, рдореЙрдбрд▓ рдФрд░ рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдлрд┐рд░ рдореИрдВ рдирд┐рдЬреА рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реВрдВрдЧрд╛ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдореЙрдбрд▓ рд╕реЗ рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред
import UIKit
class ShopController: UIViewController {
private var shopModel = ProductGroup.vegetables()
private var shopView: ShopView! {
guard isViewLoaded else { return nil }
return (view as! ShopView)
}
override func viewDidLoad() {
super.viewDidLoad()
configure()
}
}
private extension ShopController{
func configure(){
shopView.tableView.delegate = self
shopView.tableView.dataSource = self
}
}
extension ShopController: UITableViewDataSource, UITableViewDelegate{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return shopModel.products.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ProductCell")
cell?.textLabel?.text = shopModel.products[indexPath.row].name
return cell!
}
}
рдЙрдиреНрд╣реЛрдВрдиреЗ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдордЭрд╛рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рднреВрд▓ рдЧрдП?) рд╣рдорд╛рд░реА рд╢реЙрдк рд╡реНрдпреВ рдПрдХ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рджреМрд░рд╛рди рджреГрд╢реНрдп рдХреЛ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рди рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рджреГрд╢реНрдпрджрд░реНрд╢реА рд╣реИред рдпрджрд┐ рджреГрд╢реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рд╣реИ, рддреЛ рд╣рдо рдЙрд╕реЗ ShopView рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рддреЗ рд╣реИрдВредрдпрд╣ рдмрд╛рдд рд╣реИ, рд╣рдорд╛рд░рд╛ рдкрд░рдорд╡реАрд░ рдЪрдХреНрд░ рддреИрдпрд╛рд░ рд╣реИ! рдпрд╣ рдХрдорд╛рдВрдб + R рдкреНрд░реЗрд╕ рдХрд░рдиреЗ рдФрд░ рддреАрди рд╕реЗрд▓ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИредрдЖрдЦрд┐рд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ?
- рд╕рд░рд▓, рд╕реНрдкрд╖реНрдЯ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛
- рдореЙрдбрд▓, рджреГрд╢реНрдп, рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рд╕рдорд╛рди рднрд╛рд░
- рдЖрд╕рд╛рди рдкреБрди: рдЙрдкрдпреЛрдЧ рджреГрд╢реНрдп
- рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрд╕рд╛рди рд╡рд┐рд╕реНрддрд╛рд░рд╢реАрд▓рддрд╛
рдирд┐рд╖реНрдХрд░реНрд╖
рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рд╛рдл рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдХреЛрдб рдореЗрдВ рдЦреЛ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╕рднреА рдЕрдЪреНрдЫреЗ рдФрд░ рдХрдо рдмрдЧ ^ ^