๊ธฐํƒ€/iOS๐ŸŽ

[iOS/Swift] Tableview section, cell ๊ตฌ๋ถ„์„ , separator ์—†์• ์ฃผ๊ธฐ, Section cell ํด๋ฆญ์‹œ ๊ตฌ๋ถ„์„ (seperator) ์—†์• ์ฃผ๊ธฐ

yujindonut 2022. 7. 16. 17:33
728x90

๐Ÿ˜ก๋ฌธ์ œ์ƒํ™ฉ 

1. Section1์— ๋„ฃ์–ด์ค€ ์…€ ์œ„์•„๋ž˜๋กœ ๊ตฌ๋ถ„์„ ์ด ์ƒ๊ธด๋‹ค

2. Section2์˜ Cell ์•ˆ์— ๊ตฌ๋ถ„์„ ์ด ์ƒ๊ธด๋‹ค

 

๐Ÿžํ•ด๊ฒฐ๋ฐฉ๋ฒ•

[ํ…Œ์ด๋ธ”๋ทฐ ๋ณ€์ˆ˜๋ช…].separatorStyle = .none


๐Ÿ˜ก์…€์„ ํด๋ฆญํ•  ๊ฒฝ์šฐ ๋ฌธ์ œ์ƒํ™ฉ 

1. ์…€์„ ํด๋ฆญํ–ˆ์„๋•Œ Section1 ๊ตฌ๋ถ„์„ ์ด ์ƒ๊ธด๋‹ค

๐Ÿžํ•ด๊ฒฐ๋ฐฉ๋ฒ•

Section์•ˆ์— Header์™€ Footer์•ˆ์— ๊ตฌ๋ถ„์„ ์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ธฐ๋Š”๊ฒƒ!!

[ํ…Œ์ด๋ธ”๋ทฐ ์…€].selectionStyle = .none

 

์ „์ฒด ํ•จ์ˆ˜

/// ์…€ ์ง€์ •
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let remindGoalTitleTVC = remindTV.dequeueReusableCell(withIdentifier: Identifiers.RemindGoalTitleTVC) as? RemindGoalTitleTVC,
              let remindFilterTVC = remindTV.dequeueReusableCell(withIdentifier: Identifiers.RemindFilterTVC) as? RemindFilterTVC,
              let remindNoGoalTVC = remindTV.dequeueReusableCell(withIdentifier: Identifiers.RemindHaveNoGoalTVC) as? RemindHaveNoGoalTVC,
              let remindGoalTVC = remindTV.dequeueReusableCell(withIdentifier: Identifiers.RemindGoalTVC) as? RemindGoalTVC else { return UITableViewCell() }
        
        switch indexPath.section {
        case 0:
            if goalCount == 0 {
                remindGoalTitleTVC.isPrivateImageView.image = UIImage(named: "icEmptyGoal")
                remindGoalTitleTVC.goalTitleLabel.setLabel(text: "์•„์ง ์ถ”๊ฐ€ํ•œ ๋ชฉํ‘œ๊ฐ€ ์—†์–ด์š”", color: .grey_5, size: 18, weight: .bold)
            }
            return remindGoalTitleTVC
        case 1:
            
            /// bottomsheet๋ฅผ ๋„์–ด์•ผํ• ๋•Œ ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ์ด๋‹ค ( ์ฒซ ๊ฐ์ • = 0 , ํ›„ ๊ฐ์ • = 1)
            /// ๋ฐ”ํ…€์‹œํŠธ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๊ณ  ๋„์šฐ๊ธฐ๋งŒ ํ•œ ๊ฒฝ์šฐ๋Š” selected๋ฅผ false๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค.
            remindFilterTVC.selectFilterAction = { num in
                if num == 0 {
                    self.showFilterHalfModalVC(index: 0)
                    self.selectedPreviousEmoji = false
                } else {
                    self.showFilterHalfModalVC(index: 1)
                    self.selectedLatestEmoji = false
                }
            }
            
            /// ์ดˆ๊ธฐํ™”๋ฒ„ํŠผ ์ฒ˜๋ฆฌ ํ•ด์ฃผ๋Š” ํด๋กœ์ €
            remindFilterTVC.selectResetBtnAction = { check in
                if check == true {
                    self.getPreviousEmoji = ""
                    self.getLatestEmoji = ""
                    self.selectedResetBtn = check
                    self.selectedPreviousEmoji = false
                    self.selectedLatestEmoji = false
                }
            }
            
            /// ๋ฐ”ํ…€์‹œํŠธ์— ๊ฐ’ ์ž…๋ ฅ์ด ์•ˆ๋˜์—ˆ์„ ๊ฒฝ์šฐ์ด๊ฑฐ๋‚˜  ๋ฐ”ํ…€์‹œํŠธ์˜ ์ด๋ชจ์ง€๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๊ณ  ๊ป์„ ๊ฒฝ์šฐ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ
            if (getPreviousEmoji != "" || selectedPreviousEmoji == true) && selectedResetBtn == false {
                remindFilterTVC.previousFeelingBtn.setTitleColor(.sub, for: .normal)
                remindFilterTVC.previousFeelingBtn.backgroundColor = .pomeMiddlePink
                remindFilterTVC.previousFeelingBtn.setTitle(getPreviousEmoji, for: .normal)
                remindFilterTVC.previousFeelingBtn.setImage(UIImage(named: "icArrowDown17Pink"), for: .normal)
            }
            if (getLatestEmoji != "" || selectedLatestEmoji == true) && selectedResetBtn == false {
                remindFilterTVC.laterFeelingBtn.setTitleColor(.sub, for: .normal)
                remindFilterTVC.laterFeelingBtn.backgroundColor = .pomeMiddlePink
                remindFilterTVC.laterFeelingBtn.setTitle(getLatestEmoji, for: .normal)
                remindFilterTVC.laterFeelingBtn.tintColor = .sub
                remindFilterTVC.laterFeelingBtn.setImage(UIImage(named: "icArrowDown17Pink"), for: .normal)
            }
            
            /// ์ดˆ๊ธฐํ™”๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ์„๋•Œ์˜ UI์ฒ˜๋ฆฌ
            if selectedResetBtn == true {
                [remindFilterTVC.previousFeelingBtn, remindFilterTVC.laterFeelingBtn].forEach {
                    $0?.backgroundColor = .grey_2
                    $0?.setTitleColor(.grey_5, for: .normal)
                    $0?.tintColor = .grey_5
                    $0?.makeRounded(cornerRadius: 4.adjusted)
                    $0?.setImage(UIImage(named: "icArrowDown17"), for: .normal)
                    $0?.semanticContentAttribute = .forceRightToLeft
                }
                remindFilterTVC.previousFeelingBtn.setTitle("์ฒ˜์Œ ๊ฐ์ •", for: .normal)
                remindFilterTVC.laterFeelingBtn.setTitle("๋Œ์•„๋ณธ ๊ฐ์ •", for: .normal)
            }
            remindFilterTVC.selectionStyle = .none
            return remindFilterTVC
        case 2:
            if goalCount == 0 {
                return remindNoGoalTVC
            } else {
                remindGoalTVC.setData(RemindGoalDataModel.sampleData[indexPath.row])
                remindGoalTVC.tapMateEmojiBtnAction = {
                    self.showMateEmojiHalfModalVC()
                }
                return remindGoalTVC
            }
        default:
            return UITableViewCell()
        }
    }

 

728x90