20220211 iOS 일일 개발 일지
===
###### tags: `develop`
[TOC]
#### 인증 로직 관련

현재 App Delegate에서 앱이 실행될 경우, 실제 AccessToken과 refreshToken의 유효성 여부를 검증하고 있다.
하지만 같은 로직이 타 API 요청 시에도 동일하게 적용이 되어야한다는 점에서 모든 요청에 대해 token valid 여부를 거친 후, api를 요청하도록 하는 방향을 고려해볼 필요가 있을 것 같다.
API 요청 -> (login) -> isValid -> API Call
API 요청 -> (login) -> isInValid -> refresh Token -> API Call
API 요청 -> (logout) -> API Call
---
#### Click Event
Mypage를 구현하는 과정에서 history cell 내부에 event를 연결하려고 하고 있지만,
StackView 내부에 StackVie로 구성된 뷰의 구조에서 정상적인 Click Event가 발생하지 않는다.
```swift=
func setupUserAction() {
let buyTradeHistoryGesture = UIGestureRecognizer(target: self, action: #selector(didTapBuyTradeHistory(sender:)))
buyTradeHistoryView.totalHistoryView.addGestureRecognizer(buyTradeHistoryGesture)
buyTradeHistoryView.bidHistoryView.addGestureRecognizer(buyTradeHistoryGesture)
buyTradeHistoryView.progressHistoryView.addGestureRecognizer(buyTradeHistoryGesture)
buyTradeHistoryView.completeHistoryView.addGestureRecognizer(buyTradeHistoryGesture)
buyTradeHistoryView.seeMoreButton.addTarget(self, action: #selector(didTapBuyTradeHistory(sender:)), for: .touchUpInside)
let sellTradeHistoryGesture = UIGestureRecognizer(target: self, action: #selector(didTapBuyTradeHistory(sender:)))
sellTradeHistoryView.totalHistoryView.addGestureRecognizer(sellTradeHistoryGesture)
sellTradeHistoryView.bidHistoryView.addGestureRecognizer(sellTradeHistoryGesture)
sellTradeHistoryView.progressHistoryView.addGestureRecognizer(sellTradeHistoryGesture)
sellTradeHistoryView.completeHistoryView.addGestureRecognizer(sellTradeHistoryGesture)
sellTradeHistoryView.seeMoreButton.addTarget(self, action: #selector(didTapBuyTradeHistory(sender:)), for: .touchUpInside)
}
```
#### >> 수정해야할 부분
stack overflow에서 비슷한 상황에 놓인 글을 발견했으나, 해당 글에서처럼 UserInteractionEnable 설정은 해결책이 되어주지 못했음.
https://stackoverflow.com/questions/50578751/swift-addgesturerecognizer-not-work-for-stackview-children

더보기 버튼은 정상적으로 동작하는 상태지만, 실질적으로 내역 하단에 거래 내역을 바탕으로 요청했을 때도 정상적으로 동작이 가능해야 함.
view 구성 자체를 tableView delegate인 vc가 위임받아 그리고 있는 상황이고, protocol을 활용한 delegate를 활용하지 않고, closure을 활용해 구현하였으나, 현재 제대로 동작이 안되는 상태임.
stackView의 중첩에서 발생하는 문제가 아닐까 하는 생각이 든다.
관심 상품과 관련된 부분도 Header 영역으로 이동 시켜야겠음.
#### TableView Error
Changing the translatesAutoresizingMaskIntoConstraints property of the contentView of a UITableViewCell is not supported and will result in undefined behavior, as this property is managed by the owning UITableViewCell
UITableViewCell이 가진 contentView에 제약을 변경하면 위와 같은 에러메시지가 발생한다.
contentView는 UITableViewCell에 의해 관리되고 있고, 이 제약을 사용자가 맘대로 변경하면 안된다.
변경이 요구될 때는 ContainerView: UIView로 한번 감싸서 사용하면 된다.