저장된 장소의 내용을 편집할 수 있게 Edit 버튼을 추가했다.
이미 구현이 돼있는 Add Place 뷰로 이동하게 segue를 연결
var editData : PlaceData?
Info 뷰에 장소 정보를 저장하는 PlaceData 변수를 만들고 테이블 뷰에서 받은 장소 정보를 대입한다.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if(segue.identifier == "editPlace"){
let addPlaceViewController = segue.destination as! AddPlaceTableViewController
addPlaceViewController.setInfo(data: editData!, image: receiveImage!)
addPlaceViewController.delegate = self
}
}
그럼 Info 뷰에서 edit 버튼을 누르면 Add Place 화면에 장소 정보가 보인다!
직접 TextField나 lable 조작은 안되고 문자열에 옮긴 후 설정한다.
: 특정 역할을 하기 위한 메소드, 프로퍼티, 기타 요구사항 등의 청사진
protocol EditDelegate {
func didEditPlace(_ controller: AddPlaceTableViewController, data: PlaceData, image: UIImage)
}
class PlaceInfoTableViewController: UITableViewController, EditDelegate {
func didEditPlace(_ controller: AddPlaceTableViewController, data: PlaceData, image: UIImage) {
getInfo(data, image: image)
setData()
}
if(segue.identifier == "editPlace"){
let addPlaceViewController = segue.destination as! AddPlaceTableViewController
addPlaceViewController.setInfo(data: editData!, image: receiveImage!)
addPlaceViewController.delegate = self
var delegate : EditDelegate?
if delegate != nil{
editData?.name = tfPlaceName.text
editData?.position = tfPlacePosition.text
editData?.category = tfCategory.text
editData?.visit = swVisit.isOn
editData?.date = pkDate.date
editData?.coment = txvComent.text
editData?.rate = lblRate.text
delegate?.didEditPlace(self, data: editData!, image: selectedImage)
}
_ = navigationController?.popViewController(animated: true)
복잡해보이지만 segue, protocol, delegate를 이용해서 데이터 이동 성공!
정보가 안뜨기도 하고 이런 저런 세팅을 맞춰주느라 멀리 돌아온거 같다,,
태그 입력하기, 카테고리 수정 가능하게 하기, 방문여부에 따라 별점