iOS나 macOS에서 동작하는 프로그램을 만들 때는 Xcode를 사용한다.

Xcode에서는 다양한 언어 환경에서도 사용할 수 있도록 다국어를 제공하는데, 원하는 다국어를 적용하게 되면 Localizable.strings 파일이 국가별로 생성된다.


이 파일에서는 string형의 키와 값이 있는데, 여러 다국어가 있을 때 하나의 키로 앱 내에서 사용하면 된다.


"key" = "value";


근데 이 파일에서 위의 형식을 따르지않으면 오류가 발생하게 되는데 매우 불친절 하게도.. 어느 라인에서 해당 문제가 발생하였는지는 알려주지않는다.



Localizable.strings 파일 에러 찾기!!!


1. terminal.app 오픈

command+space bar 하면 나오는 Spotlight 검색으로 더 빨리 실행할 수 있다.


2. 프로젝트 경로로 이동한다.

> cd 프로젝트 경로


3. 에러를 찾아야하는 언어 파일 폴더로 이동한다.

> cd en.lproj

(다국어를 적용하면 언어코드.lproj 이름을 가진 폴더가 생성된다.)


4. 에러를 찾게 해주는 명령어를 입력한다.

(Tab 키를 누르면 폴더명이나 파일명 등은 자동완성이 된다.)

> plutil -lint Localizable.strings


아래 메세지에서는 474라인에 세미콜론이 없다고 뜨고 있다.




5. 에러를 찾아 이동하여 수정한다.


TableView 알아보기2

Tableview API

테이블뷰 자체는 UITableView클래스의 인스턴스이다.
UITableViewController는 테이블뷰를 관리하고 선택 관리, 행 편집, 테이블 구성 등과 같은 많은 지원을 추가한다.
이 추가 지원은 테이블 기반 인터페이스를 만들고 초기화하기 위해 작성하는 코드의 양을 최소화하기 위한 것이다.
이 클래스를 직접 사용하지 않고 UITableViewController의 하위 클래스를 정의하여 사용자 정의 behavior를 추가한다.


DataSource & Delegate
UITableView 객체는 DataSourceDelegate를 갖는다.
MVC(Model-View-Controller)패턴에 따라 dataSource는 앱의 데이터 모델과 tableview 사이를 중개한다.
delegate는 tableview의 모양과 동작을 관리한다.

  1. dataSource는 UITableViewDataSource protocol을 채택한다.
    UITableViewDataSource는 두개의 필수 메소드가 있다.

    • tableView:numberOfRowsInSection:
      이 메소드는 하나의 섹션에 몇개의 row를 표시할 지 알려준다.

    • tableView:cellForRowAtIndexPath:
      이 메소드는 각 행을 표시할 셀을 제공한다.

    그 외의 선택적 메소드를 사용하여 여러 섹션을 제공하거나, Header/Footer를 제공하며 테이블뷰의 추가, 제거 및 순서 변경을 할 수 있도록 돕는다.

  2. delegate는 UITableViewDelegate protocol을 채택한다.
    이 프로토콜에는 필수로 override할 메소드가 없다.

NSIndexPath 클래스의 확장
많은 테이블뷰 메소드는 인덱스 경로를 메소드 매개 변수 또는 리턴 값으로 사용한다.
인덱스 경로는 중첩 배열 트리에서 특정 노드에 대한 경로를 식별하며 Foundation 프레임워크에서는 NSIndexPath 객체로 표현한다.


TableView Cell
위에서 봤듯이 데이터 소스는 테이블뷰가 표시하는 각 행에 대해 셀 객체를 리턴한다.
이런 셀 객체는 UITableViewCell클래스에서 상속한다.
UITableViewCell 클래스에 의해 정의된 4가지 style을 사용하거나 custom하여 cell을 구성할 수 있다.

TableView 알아보기

테이블뷰는 iOS앱에서 가장 많이 볼 수 있는 형태의 인터페이스이다. 테이블뷰는 섹션으로 구별될 수 있는 여러 행의 스크롤이 가능한 데이터 목록을 제공한다.


테이블뷰의 용도

  1. 사용자가 계층적으로 구조화된 데이터를 탐색하게 하기 위함
  2. 색인된 항목 목록 표시
  3. 시각적으로 구별되는 그룹으로 세부 정보와 컨트롤 표시
  4. 선택할 수 있는 옵션 목록 제시

위의 네가지 외에도 많은 용도로 사용한다.


테이블뷰 스타일
테이블뷰의 스타일에는 두가지가 존재한다.

  1. Plain Table Views
    plain(혹은 regular) 스타일은 화면을 가로질러 늘어지는 행을 표시하며 기본적으로 흰색 배경 색상을 갖는다.
    plain table은 하나, 혹은 그 이상의 섹션을 가질 수 있다.
    섹션은 하나, 혹은 그 이상의 row를 가질 수 있다.
    각 섹션은 각각의 HeaderFooter title을 가진다. 이 두가지는 커스텀이 가능하다.
    사용자가 많은 row를 스크롤하게 되면 섹션의 Header가 테이블뷰의 맨 위로 이동하고 섹션의 Footer가 맨 아래로 이동한다.

    • 예시1 : 설정앱 > 일반 > 언어 및 지역 > iPhone Language
    • 예시2 : 카카오톡 친구목록
  2. Grouped Table Views
    grouped table view도 마찬가지로 정보를 리스트에 표시하지만 시각적으로 별개의 섹션에서 관련된 행을 그룹화하여 보여준다.
    각 섹션은 둥근 모서리를 갖고 청회색의 배경색을 갖는다.
    각 섹션의 HeaderFooter title은 이미지나 텍스트를 포함하여 작성할 수 있다.
    그룹화된 테이블은 데이터 계층 구조에서 자세한 데이터를 표현하는데 적합하다.

    • 예시1 : 설정앱
    • 예시2 : 설정앱 > 일반 > 언어 및 지역

      



테이블뷰 셀 표준 스타일
데이터를 표시하는 테이블뷰의 셀은 UIKit 프레임워크에서 4개의 표준 스타일을 제공한다.

  1. Basic
  2. Right Detail
  3. Left Detail
  4. Subtitle

그리고 Custom style을 지정하게 되면 다른 앱에서 볼 수 있듯이 개성있는 cell UI를 적용할 수 있다.

+ Recent posts