<aside> ✏️ 2022.09.21

기능을 더 추가하기에는 조금 애매한 .. 느낌이 있어서 .. 일단 지금까지 구현한 코드에 대해서 개선을 좀 하고 .. 현재의 기능에서 더 디벨롭할 수 있는 부분을 찾아서 구현했다.

만약 데이터가 없는 경우에는 empty 뷰를 보여주도록 했고, 지도의 타입/테마도 적용해보았다.

그리고 서버 연결을 할 때 상태가 불안정해서 데이터를 잘 받아오지 못하면 앱이 강제종료 되는 이슈가 있었기에 앱을 진입할 때부터 이를 막을 수 있도록 했다. (여기서 궁금한 것은 처음 진입은 인지할 수 있는데, background → foreground는 어떻게 하지? 라는 생각이 든다..) + 서버 통신 시 로딩 인디케이터를 통해서 연결중이라는 것을 시각적으로 보여주었다.

지도 화면이 다 구현했다고 생각할 때 꼭 .. 문제가 있어서 .. 다시 한번 차근차근 봤다.

</aside>

작업

메인 하단 시트 뷰 (empty)

쏘카와 그린카가 모두 0개일 경우 0개라고 보여주는 것보다 현재 대여할 수 있는 나눔카가 없다는 것을 보여주는 것이 보다 친화적이라고 생각했다.

그래서 Empty 뷰를 만들고 현재 대여할 수 있는 나눔카가 하나도 없을 때 이 뷰를 보여주는 것을 구현했다.

    private lazy var emptyView = UIView().then {
        $0.addSubviews(emptyLabel)
        $0.backgroundColor = R.Color.white
        $0.isHidden = true
    }
    
    private var emptyLabel = UILabel().then {
        $0.text = """
                  현재 대여할 수 있는 나눔카가 없어요 :(
                  주변의 다른 지점을 찾아볼까요?
                  """
        $0.textColor = R.Color.gray100
        $0.numberOfLines = 0
        $0.textAlignment = .center
    }

이렇게 empty의 요소를 선언하고

    var hasData: Bool = true {
        didSet {
            emptyView.isHidden = hasData ? true : false
            collectionView.isHidden = hasData ? false : true
        }
    }