-
210427 - TILTIL/2021 2021. 4. 28. 02:34
Notification.Name extension 추가하기
전에도 공부했지만 한 번 더 복습하는 차원에서 다시 공부했다. Notification을 보내는데 내가 생성한 이름의 notification을 보내야 할 때 추가하는 방법이다.
Storyboard에 만들어둔 NavigationViewController, ViewController 코드로 접근하기
CoreData 앱에서 cell을 클릭하면 맞는 화면을 보여줘야하는데 일단 선택과 indexPath를 쉽게 하도록 tableView(_:didSelectRowAt:)에서 구현을 해야 한다.
그리고 storyboard로 가서 viewController에 storyboardID를 정해줘야 한다.
vc를 가져와 속성에 값을 할당할 수도 있다.
present 할 때 nav가 있는 vc를 nav가 아닌 vc를 파라미터로 전달하면 crash가 난다.
그리고 instantiateViewController(withIdentifier:) 메서드는 return type이 optional이 아니어서 실패하면 crash가 발생한다.
error handling으로 다뤄보려 했는데 crash가 나서 뭐지... 확인하다가 발견
그래서 검색을 해보니
StroryboardManager라는 class를 만들고 storyboardID는 오타가 나지 않도록 enum으로 관리하는 것을 알게 됐다.
TableView 삭제 구현하기
이것도 전에 공부했는데 다시 하려니 막상 생각이 안 나서 다시 공부했다.
단순히 delete만 구현하려면 Datasource에 tableView(_:commit:forRowAt:)에서 editingStyle에 따라 분기해주면 되고 tableview에서 삭제하려면 deleteRows(at:with:)를 해주면 되는데
여기서 tableView의 numberOfRow가 맞지 않으면 crash가 발생하니까 cell의 개수가 고정된 상태에서는 사용하면 안 되는 듯하다.
Enum의 caseIterable
Enum을 만들고 case의 개수만큼 tableviewCell을 만들고 싶었다.
전에 Enumeration 공부할 때 공부한 내용이였는데 사용할 일이 없으니 까먹어서 다시 공부했다...
allCases는 읽기 전용이기 때문에 만약 위의 delete와 같이 구현하고 싶다면 배열에 담아서 사용하면 된다.
728x90'TIL > 2021' 카테고리의 다른 글
210430 - TIL (0) 2021.05.01 210429 - TIL (0) 2021.04.30 210426 - TIL (0) 2021.04.28 210425 - TIL (0) 2021.04.26 210422 - TIL (0) 2021.04.23