전체 150

[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

[Swift] error 종류 만들기와 catch

import UIKit // 에러 처리 예제 // 에러 종류 정하기 enum exError: Error { // 발생할 에러 종류 case unknown case exErrorOne(e:Int) case exErrorTwo(e: Int) } // 에러 던지기 //throw exError.exErrorOne(e: 40) // 에러 처리 1 // 함수에서 발생한 오류 해당 함수에 전파하는 경우 func checkError(e: Int) throws -> String{ guard e != -1 else{throw exError.unknown} guard e >= 30 else{throw exError.exErrorTwo(e: 30)} return "아무 오류도 발생하지 않음" } // do-catch 사용법 ..

iOS/Swift 2022.01.31

[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

[IOS]스토리보드 NavigationController 화면 전환

먼저 NavigationController 요소를 추가하고 Root는 사용하면 두고 아니라면 지워줍니다. 이후 Navigation Controller를 root로 준비한(아니면 사용할) ViewController에 우클릭 드래그로 연결해주고 NavigationController 속성에서 is initial view controller 를 체크해 줍니다. (속성 메뉴에서 is initial view controller 체크된 viewController가 앱 실행시 처음 화면이 된다.) 이제 준비가 되었으니 화면을 전환하는 방법을 알아보겠습니다. sugue로 push 또는 Present 하기 1. 스토리보드에서 ViewController를 추가 2. 동작을 수행할 클래스 생성 newFile -> cocoa ..

iOS/UIKit 2022.01.30

[IOS]storyBoard에서 ViewController 연결하기

스토리보드의 화면에서 오른쪽 위에 있는 버튼 중 가운데 버튼을 누르고 Assistant를 누르면 ViewController 화면이 나타납니다. 이제 원하는 요소를 '우클릭'으로 코드에 드래그하면 다음과 같은 창이 뜨고 설정을 하면 요소를 코드로 제어할 수 있게 됩니다. Name은 변수 이름 connection은 IBOulet과 IBAction이 있는데 Oulet은 보여주는 용도 Action은 이벤트를 받아 제어하는 용도입니다. Action에서는 Event를 골라 줄 수 있습니다. 현재는 그냥 클릭입니다(아이폰에서는 터치겠죠?) 예를 들어 Label요소를 exLabel이라는 변수 이름으로 연결했다 하면 코드에 다음과 같이 입력됩니다. @IBOutlet weak var exLabel: UILabel! 이제 ..

iOS/UIKit 2022.01.30