UITextField ์ ์ ๋ ฅ์ ํค๋ณด๋ ์ toolbar ๊ตฌํ ๋ฏธ๋ฆฌ ์๋ฆผ์์ UITextField ์ ์ ๋ ฅ์ ํ ๋ ํค๋ณด๋ ์ toolbar ๋ฅผ ๊ตฌํํ๋ ค๊ณ ํ๋ค. ๊ณํ UIToolbar ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ textField ๊ฐ first responder ๋ ๋ ์ฆ focus ๋ ๋ receiver ์ accessory view ๋ฅผ ๋ณด์ด๊ฒ ํ ๊ฒ์ด๋ค. inputAccessoryView ์ด ์์ฑ์ ์ผ๋ฐ์ ์ผ๋ก UITextField, UITextView ์ ์์คํ ์ ๊ณต ํค๋ณด๋์ ์ ์ธ์ฌ๋ฆฌ ๋ทฐ๋ฅผ ์ฐ๊ฒฐํ๋๋ฐ ์ฌ์ฉ. first responder ๋ ๋ ์ฆ, focus ๋ ๋ ์ ์ธ์ฌ๋ฆฌ ๋ทฐ๋ฅผ ๋ณด์ฌ์ค ์ ์๋ค. //set UIToolbar private func setToolbar() -> UIToolbar { let tool..
UITalbeView editingStyle allowsMultipleSelectionDuringEditing allowsMultipleSelectionDuringEditing editing mode ์์ ์ฒดํฌ๋งํฌ ์์์ด ์์ด์ ๊ตฌํ์ ์ด๋ ค์์ ๋๊ผ๋ค. ํ์ง๋ง allowsMultipleSelectionDuringEditing ์์ฑ์ ํตํด์ ํด๊ฒฐํ๋ค. ์ด๋ ๊ฒ ์ ํ๋ row ๋ค์ ์ ๋ณด๋ ์๋์ ์์ฑ์ ํตํด์ ๋ฆฌํด ๊ฐ๋ฅํ๋ค. tableView.indexPathForSelectedRow ํ์ฌ ์ ํ๋์ด์๋ cell์ index๋ฅผ return tableView.indexPathsForSelectedRows tableView๊ฐ ์ ํ๋ cell๋ค์ index๋ฅผ ๋ฐฐ์ด๋ก returnํฉ๋๋ค.(multiple selectio..
UITalbeViewCell SwipeAction UITableViewDatasource - trailingSwipeActionConfigurationForRowAt func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { //info let info = UIContextualAction(style: .normal, title: "์ธ๋ถ์ฌํญ") { action, view, completion in //์ธ๋ถ์ฌํญ์ ํด๋ฆญํ๋ฉด ๋ชจ๋ฌ์ฐฝ์ ๋์ฐ๊ฒ ํจ. guard let nextVC = self.storyboard?.instant..
UITextView placeholder ํจ๊ณผ ๊ตฌํํ๊ธฐ UITextFieldDelegate TextField ๋ placehoder ๊ธฐ๋ฅ์ ์ง์ํ์ง๋ง ์ฌ๋ฌ์ค์ ์ ๋ ฅ๋ฐ๋ TextView ๋ ๊ทธ๋ ์ง ์๋ค. ๊ทธ๋์ TextViewDelegate ๋ฅผ ํตํด์ ์ปค์คํ ํด์ฃผ์ด์ผ ํ๋ค. private func setTextViewPlaceholder() { if textView.text == "" { textView.text = "๋ฉ๋ชจ" textView.textColor = UIColor.lightGray } else if textView.text == "๋ฉ๋ชจ"{ textView.text = "" textView.textColor = UIColor.black } } ... extension ScheduleListTopC..
section ์ ๋ฐ๋ผ์ ์ปค์คํ ์ ์ค์ UITableViewDataSource section ๋ณ๋ก custom cell ์ ๋ฆฌํดํด์ฃผ๋ฉด ๋๋ค. IndexPath ์ section ์ ๋ฐ๋ผ์ custom ํ cell ์ ๋ฆฌํดํด์ฃผ๋ฉด๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก didSelectRowAt ๋ฉ์๋์์๋ section ์ ๋ฐ๋ผ์ cell ์ present ํ ์ ์๋ค. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if indexPath.section == 0 { guard let topCell = tableView.dequeueReusableCell(withIdentifier: ScheduleLis..
UITextField ๊ฐ ๋น์ด์๋ค๋ฉด UIButton ๋นํ์ฑํ ์ํค๊ธฐ @IBAction func textFieldValueChanged(_ sender: UITextField) { if textField.text?.isEmpty == true { saveBtn.isEnabled = true } else { saveBtn.isEnabled = false } } UITextFieldDelegate ๋ฅผ ํ์ฉํด์ ๊ตฌํํ๋ค. @IBOutlet weak var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() textField.delegate = self } extension AddListViewController: UITextFiel..
UIButton ๋๋ฌ๋ ๋ฐ์ํ์ง ์๋๋ก ํ๊ธฐ ๋ฏธ๋ฆฌ ์๋ฆผ ํด๋ก ์ฝ๋ฉ์ ํ๋ฉด์ ์ค์์ ์ ๋ ฌ๋ ๋ฅ๊ทผ ์ด๋ฏธ์ง๋ทฐ๋ ๋ฒํผ์ผ๋ก ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ๊ณ ์๋ค. ๋ฒํผ์ผ๋ก ๋ง๋๋ ๊ฒ์ด ์ข ๋ ํธํ๋ค! ๊ทธ๋ฐ๋ฐ ๋ฒํผ์ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋นํ์ฑํํด์ค ํ์๊ฐ ์์๋ค. @IBOutlet weak var listBulletBtn: UIButton! override func viewDidLoad() { super.viewDidLoad() listBulletBtn.isEnabled = false } ์์ ์ฝ๋๋ฅผ ํตํด์ ๋นํ์ฑํํด์ฃผ์๋๋ฐ ๋ฒํผ์ ์์ด ํ์์ผ๋ก ๋ณํด์ ๋ด๊ฐ ์ค์ ํ ์์ด ๋ํ๋์ง ์์๋ค. @IBOutlet weak var listBulletBtn: UIButton! override func viewDidLoad() { super.view..
- Swift
- Protocol
- configurable widget
- watchOS
- YPImagePicker
- Widget
- MOYA
- APNS
- SwiftUI
- rxswift
- ์๋ฒํต์
- projectsetting
- Objective-C
- RxCocoa
- OpenSourceLibrary
- CloneCoding
- UserDefaults
- 2022 KAKAO TECH INTERNSHIP
- urlsession
- IOS
- Notification
- containerBackground
- Firebase
- WWDC
- Algorithm
- MVVM
- async/await
- WWDC22
- github
- WidgetKit
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Total
- Today
- Yesterday