스토리보드 없이 CRUD - List
안녕하세요. 오늘은 저번 포스팅에 이어서 스토리보드 없이 CRUD 만들기, 그 중에서도 Create 즉 데이터를 생성하는 부분을 만들어보도록 하겠습니다.
이 포스팅에서는 스토리보드 없이 진행하는 과정이기 때문에 이전 포스팅을 반드시 읽고 와주시기 바랍니다.
그리고 이 시리즈의 포스팅에서는 테이블 뷰를 사용하는데 이에 대한 상세한 설명은 다루지 않고 있습니다. 이와 관련해서는 제가 작성해 놓은 글들을 참고해주시기 바랍니다.
그럼 바로 시작해보도록 하겠습니다.
1. 친구 목록
먼저 이전에 우리는 MainViewController.xib
파일에 하나의 테이블 뷰를 올려주었습니다. 이 테이블 뷰에서는 친구들의 목록, 즉 데이터를 전부 보여줄 것입니다.
이전에 포스팅한 간단한 테이블 뷰의 예제들에서는 스토리보드에서 테이블 뷰 위에 하나의 셀을 올려주고 시작했습니다. 하지만 오늘은 스토리보드를 전혀 사용하지 않고, 테이블 뷰 셀 역시 하나의 .xib
파일로 빼서 따로 관리하도록 하겠습니다.
이렇게 하나의 파일로 따로 관리하는 이유는 셀을 스토리보드를 사용할 때 처럼 바로 올려서 사용하게 되면 이후에 셀을 재사용할 일이 생겼을 때 재사용하기가 힘들기 때문입니다.
Model
먼저 친구라는 클래스를 만들어 주어야합니다. 프로젝트 내에 Model
이라는 그룹을 만들고 그 안에 Friend.swift
파일을 하나 생성해줍니다. 그리고 간단하게 이름과 전화번호 프로퍼티를 갖고 있는 클래스를 다음과 같이 작성합니다.
FriendCell
먼저 프로젝트 내에 View Controllers
, Cell
이라는 이름으로 두개의 그룹을 만듭니다. 그리고 이전에 만들어 놓았던 MainViewController.swift
파일과 MainViewController.xib
파일은 View Controllers
그룹 안에 넣어줍니다. 그리고 Cell
그룹 안에서 FriendCell이라는 이름의 UITableViewCell
파일을 생성해줍니다.
반드시! Also create XIB file
을 체크해주셔야 합니다.
그리고 FriendCell.xib
파일에서 다음과 같이 두 개의 Label을 올려줍니다.
왼쪽 Label은 이름을, 오른쪽 Label은 전화번호를 보여줄 것입니다.
그리고 FriendCell.swift
파일에서는 두 Label을 연결한 뒤 다음과 같이 코드를 작성해줍니다.
Reuseable Identifier
스토리보드를 사용할 때도 항상 해왔듯이 우리는 셀에 identifier
를 지정해주어야 합니다. 하지만 이러한 identifier
를 직접 문자열의 값으로 넣어주게 되면 실수가 발생할 수 있고 값이 바뀌었을 때 일일히 모두 바꿔주어야 하기 때문에 유지보수에도 적합하지 않은 방법입니다.
이러한 문제를 해결하기 위해 우리는 extension
을 사용할 것입니다. 먼저 Extension
이라는 그룹을 만들고 그 안에 NSObject + identifier
라는 이름으로 하나의 .swift
파일을 만듭니다. 그리고 다음과 같이 코드를 작성합니다.
먼저 모든 객체가 상속받는 NSObject
클래스에 reuseableIdentifier
라는 이름의 String
타입의 static
변수를 추가할 것입니다. 이렇게 되면 모든 객체에서 해당 변수를 사용할 수 있게 됩니다.
그리고 String(describing: self)
를 반환함으로써 호출하는 자신의 이름을 식별자로 사용하기 때문에 중복될 일도 없습니다. 즉 셀의 identifier
를 사용할 때는 FriendCell.reuseableIdentifier
를 사용하면 됩니다.
Register Cell
스토리보드를 사용할 때와 다르게 우리는 위에서 만들어준 셀을 직접 테이블 뷰에 등록해주는 작업을 코드로 작성해주어야 합니다. 해당 작업은 친구들의 목록을 보여주는 테이블 뷰가 존재하는 MainViewController.swift
에서 작성해줍니다.
그전에 먼저 MainViewController.xib
파일에 있는 테이블 뷰를 연결해주고 기본적인 프로토콜을 준수하고 메소드들을 구현해 줍니다. 그리고 UIBarButtonItem
도 추가해줍니다.
그리고 이제 테이블 뷰에 셀을 등록해주는 코드를 viewDidLoad
안에 작성합니다.
- 위에서 만든
FriendCell
을 friendsTableView
에 등록하는 코드입니다.
Source : github
Next : [ios] 스토리보드 없이 CRUD - Create
마무리
오늘은 이렇게 이전에 간편하게 모델 클래스를 만들고 스토리보드를 사용한 방법이 아닌 직접 코드로 identifier
를 관리하고 셀을 등록하는 방법에 대해 알아보았습니다. 다음 포스팅에서는 데이터를 추가하는 Create를 구현해보는 시간을 갖도록 하겠습니다. 감사합니다.