๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
SeSAC

[iOS] TIL_230803

by lizzydev 2023. 8. 6.

๊ฐ™์€ ๋ทฐ์ปจ์„ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ผ€์ด์Šค(์ถ”๊ฐ€ & ์ˆ˜์ • ๋“ฑ)๋กœ ์จ๋ณด๊ธฐ

  • true/false, 0/1, “present”/”push”๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ• ํ•ด์ฃผ์‹ฌ
  • bool ๊ฐ’๋„ ์ข‹์ง€๋งŒ ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ ๋ฐ–์— ๋Œ€์‘ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜๋ฉด ์ˆ˜์ •ํ•˜๊ธฐ ์–ด๋ ค์›€
  • ์ˆซ์ž๋‚˜ ๋ฌธ์ž์—ด๋กœ ํ•˜๋Š” ๊ฑฐ๋Š” ์—ฌ๋Ÿฌ์‚ฌ๋žŒ์ด ํ˜‘์—…ํ•  ๋•Œ ์–ด๋ ต๊ณ  ํ˜ผ์žํ•ด๋„ ๊นŒ๋จน์„ ๊ฐ€๋Šฅ์„ฑ ๋งŽ์Œ.

→ ์—ด๊ฑฐํ˜•์œผ๋กœ ํ•ด๊ฒฐ.

viewDidLoad์—์„œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์›ํ•˜๋Š” ์ฝ”๋“œ ๊ตฌํ˜„

return ํ•  ๋•Œ ๋ญ”๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ข‹์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๊ทธ๋ƒฅ return ๋˜๋„ ๋ฌธ์ œ ์—†๋Š” ๋ถ€๋ถ„

ํ…์ŠคํŠธ ๋ทฐ์˜ placeholder

ํ…์ŠคํŠธ ํ•„๋“œ์™€ ๋‹ฌ๋ฆฌ ๊ธฐ๋ณธ ์ง€์› X

→ ๋ถ€ํ•˜์ง์›(ํ”„๋กœํ† ์ฝœ) ๋ฐ๋ ค์™€์•ผ ํ•จ.

set์„ ์ด์šฉํ•ด์„œ ์œ„์˜ ๋‘ ์ฝ”๋“œ๊ฐ€ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋จ.

๊ฐ์‹œ์ž

didSet

๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ๊ฐฑ์‹ 

oldValue : ๋ฐ”๋€Œ๊ธฐ ์ „ ๊ฐ’.

willSet

Class์˜ get / set

ํ”„๋กœํ† ์ฝœ

๋ช…์„ธ๋งŒ ์ž‘์„ฑ๋˜์–ด ์žˆ๊ณ , ๋‹จ์ˆœํ•œ ์„ ์–ธ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์„œ, ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์€ ๋ณ„๋„๋กœ ๊ตฌํ˜„์ด ์ด๋ฃจ์–ด์ง

ํŠน์ • ๋ช…์„ธ๋ฅผ ๋”ฐ๋ฅด๋Š” ํƒ€์ž…(ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด ๋“ฑ)์€ ‘ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•œ๋‹ค’๋ผ๊ณ  ํ‘œํ˜„ํ•จ

์‹ค์งˆ์ ์ธ ๊ตฌํ˜„(๋‚ด์šฉ)์€ ํด๋ž˜์Šค, ์—ด๊ฑฐํ˜•, ๊ตฌ์กฐ์ฒด ๋“ฑ์—์„œ ์ด๋ฃจ์–ด์ง

๋ฐ”๋กœ ๊ฐ’๋„ฃ๋Š” ๊ฑด ์•ˆ๋จ

ํƒ€์ž… ์„ ์–ธ ํ•ด ์ค˜์•ผ ํ•จ.

์ตœ์†Œ ์š”๊ตฌ์‚ฌํ•ญ get์ด๋‚˜ set์„ ๋„ฃ์–ด ๋‘˜ ์ˆ˜ ์žˆ์Œ.

get set ๋‘˜ ๋‹ค ๋„ฃ์–ด๋†“๊ธฐ

get๋งŒ ๊ตฌํ˜„ํ•ด๋†”์„œ ์˜ค๋ฅ˜ ๋‚จ

get set ๋‘˜๋‹ค ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •

optional

protocol ํ•จ์ˆ˜์ค‘ optional ์•ˆ ๋ถ™์€ ํ•จ์ˆ˜๋Š” ํ•„์ˆ˜ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜.

ํ…์ŠคํŠธ๋ทฐ ์•ก์…˜ ๋„ฃ๊ธฐ

label→show ๊ธฐ๋Šฅ

button→click ๊ธฐ๋Šฅ

textfield,searchbar → ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์•ก์…˜ ์กด์žฌ

textview์—๋Š” ์—ฌ๋Ÿฌ ๋ถ€ํ•˜์ง์›์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

1. UITextViewDelegate

2. delegate ์—ฐ๊ฒฐ

3. ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœํ•ด์„œ ๊ตฌํ˜„

  • ๊ธ€์ž์ˆ˜ ์ฒดํฌ : textViewDidChange

textViewDidEndEdting

ํ…์ŠคํŠธํ•„๋“œ ์ž…๋ ฅ๊ฐ’ Picker View๋กœ ๋ฐ›๊ธฐ

์„ ํƒํ•œ ํ•ญ๋ชฉ์œผ๋กœ ํ…์ŠคํŠธ ํ•„๋“œ ์ฑ„์šฐ๊ธฐ

SearchBar

์„œ์น˜๋ฐ”๋ฅผ navigationItem.titleView๋กœ ๋„ฃ์€ ๊ฑฐ๋ผ ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ” ์žˆ์–ด์•ผ ๋ณด์ž„

์„œ์น˜๋ฐ” ์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰๊ธฐ๋Šฅ ๋„ฃ๊ธฐ

1.UISearchBarDelegateํ”„๋กœํ† ์ฝœ ์ถ”๊ฐ€

2.ํ•„์š”ํ•œ ํ•จ์ˆ˜๋“ค ๊ตฌํ˜„

searchBarSearchButtonClicked

ํ…์ŠคํŠธํ•„๋“œ์—์„œ ์—”ํ„ฐ์น˜๋ฉด ํ˜ธ์ถœ ๋จ

(์—”ํ„ฐ์ณ์„œ ๊ฒ€์ƒ‰)

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    searchList.removeAll()
    for item in list {
        if item.contains(searchBar.text!) {
            searchList.append(item)
        }
    }
}

searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)

ํ…์ŠคํŠธ ๋ณ€๋™ ๋˜๋ฉด ํ˜ธ์ถœ(์‹ค์‹œ๊ฐ„ ํƒ€์ž์น˜๋ฉด์„œ ๊ฒ€์ƒ‰)

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        searchWord()
        searchList.removeAll()
        for item in list {
            if item.contains(searchBar.text!) {
                searchList.append(item)
            }
        }
}

searchBarCancelButtonClicked

cancel ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ํ˜ธ์ถœ

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    searchList.removeAll()
    searchBar.text = ""
}

3.๊ฒ€์ƒ‰ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ ๋ณ€๋™ ๋จ์— ๋”ฐ๋ผ ์ปฌ๋ ‰์…˜๋ทฐ reload

var searchList: [String] = [] {
    didSet {
        collectionView.reloadData()
    }
}

4. delegate ๋“ฑ๋ก

searchBar.delegate = self 

 

'SeSAC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[iOS] TIL_230807  (0) 2023.08.09
[iOS] TIL_230804  (0) 2023.08.06
[iOS] TIL_230802  (0) 2023.08.05
[iOS] TIL_230801  (0) 2023.08.03
[iOS] TIL_230731  (0) 2023.08.03