위치 정보를 받아오려면 권한 허용이 필요한데, 권한을 요청받기 위해서는 우선 info.plist에 사용할 권한을 추가해야한다. 앱이 foreground상태인 경우에만 위치 정보를 받을 것이므로 일단 아래의 것만 추가해주었다. (꼭 필요한 권한만 설정해야하며, String에도 구체적으로 description이 적혀있어야 리젝되지 않는다.) Location Always Usage Description, Location Default Accuracy Reduced 등 Location과 관련된 권한들이 더 있으니 필요에 따라 필수적인 것들만 추가해주면 될 것 같다. 이제 위치를 받아오기 위한 과정을 차례대로 진행해보자. Location에 관한 것들은 거의 대부분 CoreLocation프레임워크에서 이루어진다고 ..
UISearchController는 말그대로 검색 결과를 관리하는 뷰컨트롤러이다. UISearchController는 UIViewController를 상속받고 있으며, 서치바를 따로 넣지 않아도 포함되어 있다. (지금부터 서치컨트롤러라고 부르겠다.) 만드는 방법은 간단하다. navigationItem에 searchController라는 프로퍼티가 있으며, 여기에 넣어주면 된다. 서치 컨트롤러를 넣은 뷰 컨트롤러에서 데이터를 보여줄 것이므로 searchResultsController는 nil로 두었다. 서치 컨트롤러가 정상적으로 보여진다.(leftBarButton과 navigationTitle은 임의로 설정한 것이다.) TMDB API를 이용해 영화 목록을 가져온 뒤, 그 안에서 검색이 가능하도록 구현할 ..
스크롤뷰의 contentOffset을 이용하는 방법 테이블뷰나 컬렉션뷰는 스크롤뷰를 상속받고 있기때문에 스크롤뷰의 contentOffset을 이용해 페이지네이션을 구현할 수 있다. 파랗게 보이는 부분이 scrollView.contentOffset.y이다. 즉, contentOffset.y는 스크롤뷰 전체 height에서 스크린만큼의 값을 뺀만큼의 값만 가질 수 있는 것이다. 예를 들어, 스크롤뷰가 1000의 높이를 가지고 있고 기기의 스크린 사이즈가 300이라고 해보자. 가장 첫 화면에서 contentOffset.y는 0.0이므로, 바닥까지 스크롤을 한다면 contentOffset.y의 최대는 700인 것이다. 이제 이 프로퍼티를 이용해서 간단한 페이지네이션 또는 무한스크롤을 구현해보자. 우선, 뷰컨트롤..
프로젝트를 진행하며 컬렉션뷰 셀의 버튼에 addTarget을 통해 액션을 만들어주었다. 이때 파라미터로 Int값을 받아와 네트워킹을 진행하고 싶었는데 불가능했다. #selector를 사용할 땐 일반적인 함수처럼 Int, String 타입 등의 파라미터를 전달할 수 없고, 오로지 버튼이나 제스쳐같은 것들만 파라미터로 받을 수 있다. 그래서 나는 버튼의 tag를 이용해보기로했다. 데이터가 들어있는 배열의 indexPath.item번째 값이 필요했기때문에 아래와 같이 작성해주었다. cellForItemAt에서 아래와 같이 적어주면 버튼의 태그에는 해당 셀의 indexPath.item값이 들어갈 것이다. 버튼의 태그로 몇번째 셀의 버튼을 클릭했는지 알 수 있어 알맞게 네트워킹을 진행할 수 있었다. 결과 잘나옴.
프로젝트를 생성하면 아래처럼 기본적으로 폴더 하나가 만들어진다. 이 폴더 바깥에 ".gitignore"라는 이름을 가진 empty파일을 하나 만들어준다. (.이 앞에 붙어있으면 숨김폴더라는 의미) 아래와 같이 알림창이 뜰텐데 그냥 Use를 눌러준다. 이제 깃허브에 올리지않을 파일을 적어주면된다. 단, 파일을 생성하기 전에 미리 이름을 적어주어야 한다. (나중에 적어도되지만 복잡함) Keys라는 swift파일을 gitignore에 적어보겠다. gitignore에 Keys.swift만 적은 상태로 Keys와 Model 파일을 생성한 뒤, push를 해보았다. Keys 스위프트 파일은 보이지않고, Model만 있는 것을 확인할 수 있다. .gitignore파일을 선택하여 확인해보면 어떤 파일을 적었는지는 확인..
- Total
- Today
- Yesterday