// SearchCollectionViewCell
// MARK: - Properties
var media: Media?
var addErrorHandler: (() -> Void)?
var addCompletionHandler: (() -> Void)?
// MARK: - Action Methods
private func setAddButtonAction() {
addButton.addTarget(self, action: #selector(addButtonClicked), for: .touchUpInside)
}
@objc private func addButtonClicked() {
if let media = media, let addErrorHandler = addErrorHandler, let addCompletionHandler = addCompletionHandler {
let repository = MediaRepository()
repository.add(media: media, completionHandler: addCompletionHandler, errorHandler: addErrorHandler)
}
}
Button Action - Cell์์ ์ฒ๋ฆฌ
// SearchViewController
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: SearchCollectionViewCell.reuseIdentifier, for: indexPath) as? SearchCollectionViewCell else {
print("Cannot find SearchCollectionViewCell")
return UICollectionViewCell()
}
cell.media = searchResults[indexPath.row]
cell.addErrorHandler = { self.alert(title: "์ค๋ฅ ์๋ด", message: "์ถ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ค์ ์๋ํด ์ฃผ์ธ์.") }
cell.addCompletionHandler = { self.searchView.makeToast("์ฑ๊ณต์ ์ผ๋ก ์ถ๊ฐ๋์์ต๋๋ค.", duration: 1, position: .center) }
cell.showResult {
self.alert(title: "์ค๋ฅ ์๋ด", message: "๊ฒฐ๊ณผ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.")
}
return cell
}
Button Action - View Controller์์ ์ฒ๋ฆฌ
์์ ๊ฐ์ด ๊ฐ ์ ์ ์ถ๊ฐ ๋ฒํผ์ ๋ํ ์ก์ ์ฒ๋ฆฌ๋ฅผ Collection View Cell ํด๋์ค์์ ํ๋ ๊ฒ์ด ์ข์์ง, ์๋๋ฉด View Controller์ cellForItemAt ๋ฉ์๋ ์์์ ํ๋ ๊ฒ์ด ์ข์์ง ๊ณ ๋ฏผ์ด ๋๋ค.,,
์ถ๊ฐ ๋ฒํผ ์ก์ |
Cell์์ ์ฒ๋ฆฌ | View Controller์์ ์ฒ๋ฆฌ |
์ฅ์ | ๊ฐ Cell ์์ ์ค๋ธ์ ํธ(๋ฒํผ)์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๋ช ํํ๊ฒ ๊ตฌ๋ถํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค. | Handler Closures๋ฅผ ๋๊ฒจ์ค ํ์๊ฐ ์์ด ์ต์ ๋ ๋ฐ์ธ๋ฉ์ ๊ณผ์ ์ ์๋ตํ ์ ์๋ค. |
๋จ์ | Handler Closures๋ฅผ View Controller์์ Cell๋ก, ๊ทธ๋ฆฌ๊ณ Realm Repository๊น์ง ๋๊ฒจ ์ฃผ์ด์ผ ํ๊ณ , ์ก์ ์ฒ๋ฆฌ ํจ์์์ ์ต์ ๋ ๋ฐ์ธ๋ฉ์ด ๊ณผ๋(?)ํ๊ฒ ๋ฐ์ํ๋ค. |
cellForItemAt ํจ์๊ฐ ๊ธธ์ด์ง๊ณ , Cell ๋ด๋ถ ์ค๋ธ์ ํธ(๋ฒํผ)์ ๋ํ ์ฒ๋ฆฌ์ ๊ตฌ๋ถ์ด ํ๋ ค์ง๋ค. |
'๐งฏ Troubleshooting' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Cheliz] UICollectionView leading/trailingSwipeActions - Realm Read/Delete (0) | 2023.02.09 |
---|---|
[Cheliz] UITableView ์ฌ์ฉ์ฑ ํฅ์ (0) | 2023.02.09 |
[Cheliz] Enumeration ํ์ ์ ํ๋กํผํฐ๋ฅผ ๊ฐ๋ ๋ชจ๋ธ๋ก parsingํ๊ธฐ (0) | 2023.02.09 |
[SWM] CLLocationManagerDelegate - ํธ์ถ๋์ง ์๋ ๋ฉ์๋ (1) | 2023.02.07 |
[StudyWithMe] UIDatePicker ์ธ์ด Issue (0) | 2023.02.07 |