IOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЪреИрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рд╣рд░ рдмрд╛рд░ рдЪреИрдЯ рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рд▓реЗрдЖрдЙрдЯ рдХреЗ рджреМрд░рд╛рди, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╡рд╛рд▓ рдерд╛: "рдХреНрдпрд╛ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕рд░рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?" рдЕрдЧрд▓реЗ рд╣рдлреНрддреЗ рдореБрдЭреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рдмрд╛рддрдЪреАрдд рдХрд░рдиреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рд▓реЗрдЖрдЙрдЯ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдЖрдиреЗ рд▓рдЧреЗред рдереЛрдбрд╝рд╛ рдФрд░ рдкреЙрдЪрд┐рдВрдЧ рдСрдЯреЛрд▓реЙрдпрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдмреИрдардиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓реЗрдЖрдЙрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЕрдзрд┐рдХрддрдо рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ред рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╕рдордп, рд╡реЗ рдЕрдХреНрд╕рд░ UICollectionView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╣рдо UITableView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдПрдХ рдХрджрдо: рдПрдХ UITableView рддреИрдпрд╛рд░ рдХрд░рдирд╛


рдкрд╣рд▓реЗ рдЖрдкрдХреЛ UITableView рдмрдирд╛рдиреЗ рдФрд░ рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдХреЛрдб рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ:

tableView = UITableView() tableView.delegate = self tableView.dataSource = self tableView.rowHeight = UITableView.automaticDimension tableView.estimatedRowHeight = 44.0 tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) tableView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true tableView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true tableView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true 

рдпрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдкрдВрдХреНрддрд┐рд╣рд╛рдЗрдЯ рд╕реЗрдЯ рдХрд░рдирд╛ рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд рд░реЛрд╣рд╛рдЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИред

рдЪрд░рдг рджреЛ: рдПрдХ рд╕реЗрд▓ рдмрдирд╛рдПрдВ


рдЕрдм рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рднрд╛рдЧ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ - рд╕реЗрд▓ рдХрд╛ рд▓реЗрдЖрдЙрдЯ! рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, рдпрд╣ UITableViewCell рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, "XIB рдлрд╝рд╛рдЗрд▓ рднреА рдмрдирд╛рдПрдБ" рдкрд░ рдЯрд┐рдХ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред рд╣рдо рд▓реЗрдЖрдЙрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗред

рд╕реЗрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ UIView рдЦреАрдВрдЪреЗрдВ рдФрд░ рдХреЛрдИ рднреА рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рд░рдЦреЗрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рджреГрд╢реНрдп рдкрд░ рдирдП UILabel рдХреЛ рдЦреАрдВрдЪреЗрдВред рдЕрдм рдЗрд╕ UILabel рдХреЗ рд▓рд┐рдП рдЕрдЯреЗрдВрдбреЗрдВрд╕ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ рдЖрдкрдХреЛ рд▓рд╛рдЗрдиреНрд╕ рдлреАрд▓реНрдб рдореЗрдВ 0 рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд╕реЗ рд╕реЗрд▓ рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдХреА рдХрдИ рд▓рд╛рдЗрдиреЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЫрд╡рд┐

рдЕрдм рдЖрдкрдХреЛ рд▓реЗрдмрд▓ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЗрд╕рдХреЗ рд╕реБрдкрд░рд╡реНрдпреВ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдПрдХ рдорд╛рдореВрд▓реА рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЫрд╡рд┐

рдФрд░ рдЕрдм рд╢реБрджреНрдз рдЬрд╛рджреВ! рднреВрд░реЗ рд░рдВрдЧ рдХреЗ рджреГрд╢реНрдп рдХреЗ рдмрд╛рдПрдБ, рдКрдкрд░реА рдФрд░ рдирд┐рдЪрд▓реЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рд╕реЗрд▓ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд╣реБрдХ рдХрд░реЗрдВ, рдлрд┐рд░, рдПрдХ рдЕрд▓рдЧ рдЪрд░рдг рдореЗрдВ, рдЧреНрд░реЗ рджреГрд╢реНрдп рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕реЗ рд╕реЗрд▓ рдХреЗ рджреГрд╢реНрдп рдХреЗ рджрд╛рд╣рд┐рдиреЗ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрдирд╛рдПрдВред рдЕрдм рдирдП рдмрдирд╛рдП рдЧрдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧреБрдг рдирд┐рд░реАрдХреНрд╖рдХ рдЦреЛрд▓реЗрдВред рд╕рдВрдмрдВрдз рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, "рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдмрд░рд╛рдмрд░" рд╕реЗрдЯ рдХрд░реЗрдВ, рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 60 рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдВред рдпрд╣ рдмрд╛рдзрд╛ рд╕рдВрджреЗрд╢ "рдмреБрд▓рдмреБрд▓рд╛" рдХреА рдЕрдзрд┐рдХрддрдо рдЪреМрдбрд╝рд╛рдИ рдХреЛ рд╕реАрдорд┐рдд рдХрд░реЗрдЧреАред

рдЫрд╡рд┐

рд╣рдо рдЖрдЦрд┐рд░реА рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдВрджреЗрд╢ рдмрдмрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдКрдБрдЪрд╛рдИ рд╕реНрдерд┐рд░ рдмрдирд╛рдПрдВ, рдФрд░ рдлрд┐рд░ рдЧреНрд░реЗрдЯрд░ рдерд╛рди рдпрд╛ рд╕рдорддреБрд▓реНрдп рд╕реЗ рд╕рдВрдмрдВрдз рдФрд░ рдХрд┐рд╕реА рднреА рдорд╛рди рдХреЛ рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ рдХрд╛ рдореВрд▓реНрдп рдКрдВрдЪрд╛рдИ рдореЗрдВ "рдмреБрд▓рдмреБрд▓реЗ" рдХрд╛ рдиреНрдпреВрдирддрдо рдЖрдХрд╛рд░ рд╣реЛрдЧрд╛, рдпрд╣ рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░ рдФрд░ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╕реЗрд▓ рд╡рд░реНрдЧ рдореЗрдВ рд▓реЗрдмрд▓ рдФрд░ рдмреБрд▓рдмреБрд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ IBOutlet рдмрдирд╛рдПрдВред

рд╕реНрдЯреЗрдк рдереНрд░реА рдПрдВрдб рд▓рд╛рд╕реНрдЯ: рдкреБрдЯрд┐рдВрдЧ рдЗрдЯ рдСрд▓ рдЯреБрдЧреЗрджрд░


рдпрд╣ рдХреЗрд╡рд▓ UITableViewDataSource рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рднрд░рдиреЗ рдФрд░ рд╣рдорд╛рд░реЗ рд╕реЗрд▓ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:

 tableView.register(UINib(nibName: "ExampleCell", bundle: nil), forCellReuseIdentifier: "incomingMessage") 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд╕реЗрд▓ рдмрдирд╛рдиреЗ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ:

 let cell = tableView.dequeueReusableCell(withIdentifier: "incomingMessage", for: indexPath) cell.messageLabel.text = "This is a test message" return cell 

рдирд┐рд╖реНрдХрд░реНрд╖


рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕реЗрд▓ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ "рдмрдмрд▓" рдХреЗ рдХреЛрдиреЛрдВ рдХреЛ рдЧреЛрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рд╣рдордд, рд╡рд┐рдзрд┐ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд╣реИред рдЗрд╕ "рдмрдмрд▓" рдХреА рдКрдВрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдХреА рдХреЛрдИ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдореЗрдВ рдмрд╕ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ AutoLayout рдХреЛ рд╕реМрдВрдкрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдкреНрд▓рд╕ рдпрд╛ рдорд╛рдЗрдирд╕ рдкреВрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ:

рдЫрд╡рд┐

рд╡рд╣ рд╕рдм рд╣реИ! рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛ рд╣реЛрдЧрд╛!

Source: https://habr.com/ru/post/hi448416/


All Articles