본문 바로가기

전체 글46

[iOS] 코드로 바 버튼 아이템 추가하기 스토리보드를 나누어 작업하다보니 네비게이션 컨트롤러에 속해야하는 화면임에도 네비게이션 바가 나타나지 않는 경우가 있다. 여기에 바버튼을 추가하고 싶을 때는 평소에는 스토리보드에 오브젝트(bar button item)를 추가하여 사용할 수 있는데 네비게이션 바가 없을 땐 코드로 추가할 수있다. let rightBarButton = UIBarButtonItem(title: "추가", style: .plain, target: self, action: #selector(addItem)) self.navigationItem.rightBarButtonItem = rightBarButton 결과 화면은 아래와 같다. 추가된 바 버튼을 터치하면 action: 부의 메서드가 실행된다. 2020. 7. 14.
[iOS] UIButton 액션 코드로 추가하기 이전 포스팅에서 공통 셀을 구성한 모습을 사진으로 보여준 적이 있는데 이 셀의 구성을 보면 버튼이 두 개 있음을 알 수 있다. 사용자가 찜해놓은 도서임을 표시하는 하트 버튼과 출간시 알림을 받고싶을 때 선택하는 벨 버튼이 바로 그것인데 이 버튼들은 모두 테이블 뷰의 셀 내에 각각 존재한다. 각 버튼의 상태와 그에 따른 작동 원리를 정리해보자면 버튼이 비어있는 하트일 때 터치하면 채워진 하트로 바뀌고 사용자의 찜리스트에 도서 정보가 추가된다. 버튼이 채워진 하트일 때 터치하면 비어있는 하트로 바뀌고 사용자의 찜리스트에서 도서 정보가 삭제되어야 한다. 처음에는 단순히 UITableViewCell 클래스 내에 버튼의 액션 메서드를 추가하여 위의 기능을 구현하려 하였으나 이렇게 할 경우 도서 정보의 index .. 2020. 7. 13.
[iOS] URL을 통해 이미지 데이터 가져오기 프로젝트를 진행하면서 open api를 활용하다보니 이미지 데이터를 직접 가져오는 게 아닌 이미지가 저장된 url 주소를 통해 이미지를 불러와야 하는 경우가 자주 생긴다. 위의 사진은 프로젝트 기능상 공통으로 사용하는 셀을 구성한 것이다. 왼쪽의 UIImageView의 image 프로퍼티 값을 지정해줌으로써 이미지를 설정할 수 있다. 사용할 이미지가 프로젝트에 포함되어 있을 경우 다음과 같은 두 가지 방법으로 이미지를 설정해줄 수 있다. 1. 스토리보드 상의 Attributes Inspector - Image View - Image에서 원하는 이미지명을 입력하여 설정 그러나 TableView, CollectionView의 셀 내에 이미지 뷰를 배치했을 경우 셀마다 각각 다른 이미지가 필요할 경우가 생긴다.. 2020. 7. 13.
#5. Alert Alert를 구현하기 위해서는 다음과 같은 단계가 필요하다. AlertController 타입 변수 생성 AlertAction 타입 변수 생성 AlertController.addAction(AlertAction) self.present()로 alert 표시 우선, UIAlertController 변수를 생성한다. let alert = UIAlertController(title: nil, message: "메시지", preferredStyle: .alert) preferredStyle은 alert, actionSheet 두 가지가 존재하며 각각 다음과 같이 표시된다. 다음으로 UIAlertAction 변수를 생성하여 AlertController에 액션을 추가한다. 추가한 액션 수에 따라 Alert의 형태가.. 2020. 4. 18.
#4. Delegate Pattern Delegate Pattern은 다른 곳에 실제로 구현할 내용을 맡겨 놓고 규격만 정해 전달하는 패턴을 의미한다. 규격은 protocol을 이용해 정의할 수 있는데, 이는 자바의 인터페이스와 유사하다고 볼 수 있다. 다음과 같이 스토리보드를 구성한다고 할 때, Button을 통해 이동한 두번째 뷰의 텍스트 필드에 입력한 내용이 첫번째 뷰의 레이블에 나타나도록 구현하고자 한다. 이렇게 여러 뷰가 있을 때 하나의 뷰에서 다른 뷰로 데이터 전달이 필요할 때 사용자가 직접 델리게이트를 정의하여 그 기능을 구현할 수 있다. 우선, 입력된 데이터를 불러오기 위한 메서드가 포함된 델리게이트를 정의한다. protocol InputData { func load(_ text: String) } 두번째로, 델리게이트 변수를.. 2020. 4. 18.
#3. Gesture 어플리케이션의 제스처는 여러 종류가 있으며, 각 제스처에 따라 화면에서 어떻게 반응할지를 지정해줄 수 있다. 각 제스처는 UIGestureRecognizer를 이용하여 제스처를 다룰 수 있다. 이 글에서는 Swipe를 예시로 다루고자 한다. GestureRecognizer를 사용하기 위해서는 viewDidLoad() 메서드 내에 1) 해당 제스처에 맞는 recognizer를 선언하고, 2) View Controller에 GestureRecognizer를 추가한 다음, 3) 제스처 사용시 실행되는 액션 메서드를 선언하면 된다. Swipe의 경우, let left = UISwipeGestureRecognizer(target: self, action: #selector(mvLeft)) left.directio.. 2020. 4. 14.