iOS/UIKit 22

[IOS] datePicker() 를 TextField에서 사용과 TextField에 이벤트 추가

스토리보드에서 datePicker Object를 사용하면 화면을 넓게 차지합니다. 그래서 TextField를 클릭하면 datePicker가 나오도록 해보겠습니다. // datePicker 객체 생성 private let datePicker = UIDatePicker() // datePicker를 원하는 유형으로 설정 // 고를 데이터 self.datePicker.datePickerMode = .date // 선택 방식 self.datePicker.preferredDatePickerStyle = .wheels // 언어 설정 self.datePicker.locale = Locale(identifier: "Korean") // 이 코드로 textField에 datePicker를 넣을수 있다. // dateT..

iOS/UIKit 2022.02.07

[IOS] dateFormatter( )로 Date( )를 String으로 만들기

보통 원하는 시점을 담고있는데 Date() 객체를 원하는 String으로 바꿔 사용하는 방법을 정리하겠습니다. // DateFormatter를 가져와 커스텀 let formatter = DateFormatter() // String으로 구성 // ex) yyyy 하면 2022가 나오고 yy로 하면 22로 출력되는 방식 formatter.dateFormat = "yy년 MM월 dd일E " // 언어 설정(안해도 한국어로 나오긴 했습니다.) formatter.locale = Locale(identifier: "ko_KR") // String으로 담아 사용 let exString = formatter.string(from: 원하는 Date객체) 원하는 대로 변경해서 사용하시면 되겠습니다.

iOS/UIKit 2022.02.07

[IOS] Alert 창 다루기

alert창은 사용자에게 질문을 하듯이 사용 가능합니다. alert를 띄우는 방법에 대해 알아보겠습니다. // alert 변수 만들기 // preferredStyle이 .actionSheet이면 아래에서 올라오는 선택 창을 띄울수 있다. let alert = UIAlertController(title: "화면에 띄울 제목", message: "화면에 띄울 메세지", preferredStyle: .alert) // 추가 버튼 만들기 let addButton = UIAlertAction(title: "버튼이름", style: .default, handler: { [weak self] _ in // 메모리 누수 에방 // 등록을 눌렀을 때 실행될 클로저 // alert의 TextField에서 받아온다. 배열..

iOS/UIKit 2022.02.03

[IOS] UIBarButton 커스텀

먼저 UIBarButton을 만들고 동작을 커스텀해 보겠습니다. 이렇게 하는 이유는 원래는 화면에 표시되지 않고 필요할때 사용하기 위해서 입니다. // 버튼 변수 만들기 var someButton: UIBarButtonItem? // action은 버튼 클릭시 호출 메서드 self.someButton = UIBarButtonItem(barButtonSystemItem: .스타일, target: self, action: #selector(@objc함수 지정)) // selector 메서드 정의 @objc func donebuttonTap(){ // 코드 }

iOS/UIKit 2022.02.03

[IOS] UITableView (UITableViewDataSource, UITableViewDelegate)

UITableView의 사용법에 대해서 알아보겠습니다. TavbleView를 @IBOulet으로 받아와주고 사용하면 되는데 TavbleView를 사용하는 뷰컨트롤러에 UITableViewDataSource와 UITableViewDataSource 프로토콜을 채택해 데이터를 다루고 셀을 조절할 수 있습니다. 프로토콜 채택은 다음 두가지 방법이 있습니다. (사실 똑같은 내용인데 가독성 차이가 있습니다.) 1. 뷰컨트롤러에 직접 상속 2. extention 이용 이것들을 사용하기 위해선 viewDidLoad()에 delegate 패턴을 사용한다고 알려줘야 합니다. 사용하는 방법의 요점은 다음과 같습니다. 이후 tableView의 cell을 적절히 조절해 사용합니다. import UIKit class ViewC..

iOS/UIKit 2022.02.03

[IOS] UIButton의 text를 가져와 사용하기

ViewController Class에서 UIButton의 Text를 가져와 사용해 보도록 하겠습니다. 간단하게 될 줄 알았는데 값을 불러오지 못해 한참 헤맸네요.. 일단 @IBOulet이나 @IBAction으로 버튼을 연결하는데 @IBAction에서 처리하는 예제를 해보겠습니다. 다음 예제를 보면 Button의 Textsms 5입니다. 그러면 sender로 Button이 무엇인지 받아오고 여기의 title에 접근하는데 .title(for: .normal)로 접근합니다. for: 뒤에 다른 것들은 상황에 따라 다른 값인듯 한데 아무것도 안했을때 기본은 .normal임으로 해당 값을 사용합니다. @IBAction func fiveClick(_ sender: UIButton) { // sender.titl..

iOS/UIKit 2022.02.01

[IOS] @IBDesignable , @IBInspectable

@IBDesignable은 Object를 커스텀했을때 스토리보드에서 바로 볼 수 있도록 해 주는 요소이다. - 남용하면 빌드 시간이 길어지고 가끔 오류를 뱉어 Xcode를 다시 껐다 켜야했다.. @IBInspectable은 Object를 커스텀하고 StoryBoard inspecter에서 조작이 가능하게 해 주었습니다. 버튼을 커스텀하는 예시를 보면 import UIKit // UIButoon을 커스텀하는 예제로 꼭 UIButton을 상속해 주어야 한다. // 변경되면 스토리보드에서 바로 볼 수 있다. @IBDesignable class RoundButton: UIButton { // @IBInspectable을 줌으로 스토리보드에서 값 변경 가능하다. @IBInspectable var isRound :..

iOS/UIKit 2022.02.01

[IOS] 화면(ViewController)간 데이터 주고 받기 2 상위->하위

d상위에서 하위로 데이터를 전달하는건 delegate pattern을 이용하는 것 보다 간단합니다. 이는 Segue를 이용할 때와 Code를 이용할때 방법이 다릅니다. - 하위에서 상위로 데이터를 전달하는 방법 - 상위에서 하위로 데이터를 전달하는 방법 1. Code를 이용할 때 2. Segue를 이용할 때 1. Code를 이용할 때 상위 // 상위 ViewController class ViewController: UIViewController, SendDataDelegate { @IBAction func "누르면 이동할 버튼"(_ sender: UIButton) { // 스토리보드에서 이름 붙이고 이름을 가져옴 guard let viewController = self.storyboard? .instan..

iOS/UIKit 2022.01.31

[IOS] 화면(ViewController)간 데이터 주고 받기 1 하위->상위

화면은 서로 데이터를 주고 받을 수 있어야 합니다. 원래 뷰 컨트롤러 -> 이동할 뷰 컨트롤러를 '상위' -> '하위'로 표현하겠습니다. - 하위에서 상위로 데이터를 전달하는 방법 - 상위에서 하위로 데이터를 전달하는 방법 1. Code를 이용할 때 2. Sugue를 이용할 때 하위에서 상위로 데이터를 전달하는 방법 Present를 예로 들었지만 Push도 동일하게 사용할 수 있습니다. 하위 뷰에서 상위 뷰로 데이터를 전달할 때는 delegate 패턴이라는 것을 사용합니다. 1. 상위 뷰에 프로토콜 선언(원하는 기능을 넣으면 되는데 여기서는 기본 데이터 전달을 하겠습니다.) 2. 하위 뷰에 원하는 함수 정의 3. 하위 뷰의 프로퍼티에 자기 자신을 전달하기() protocol을 이용하는데 이는 어디에 선언..

iOS/UIKit 2022.01.31

[IOS] View life cycle (라이프 사이클)

처음에 웹을 공부할 때 라이프사이클에 대해 조금만 하고 넘어간 적이 있는데 나중에 사용하다 보니 이 라이프사이클을 잘 아는게 작동하는데 매우 중요한 요소라는 것을 알았습니다. 마찬가지로 IOS를 처음 공부하는 지금 분명하게 짚고 넘어가는 것이 좋을 것 같습니다. Swift의 라이프사이클 메서드의 이름은 직관적입니다. 다음은 print()를 override에 추가해 콘솔에 라이프 사이클을 찍어볼 수 있도록 하였습니다. class ViewController: UIViewController { // 뷰가 처음 로드될 때 실행 override func viewDidLoad() { super.viewDidLoad() print("뷰 로드") } // 뷰가 화면에 나타나기 전에 실행됨 override func vi..

iOS/UIKit 2022.01.30