[Error] fatalError("Expected superview but found nil when attempting make constraint `equalToSuperview`.")
์ฑ์ ๋ง๋ค๊ณ ์๋๋ฐ ๊ฐ์๊ธฐ ๋ฐ์ํ ์๋ฌ.
์ธํฐ๋ท์ ์ฐพ์๋ณด๋๊น addsubView๋ฅผ ์ํด์ ์๊ธฐ๋ ๋ฌธ์ ์ธ๊ฒ ๊ฐ์๋ฐ, ๋ค์ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฝ๋๋ฅผ ์ฝ์ด๋ณด๋ฉด์ ํด๊ฒฐํด๋ณด์.
๋๋์ฒด ์ด๋์ ๋ฌธ์ ๊ฐ ๋๋๊ฒ์ธ๊ฐ? (์๋ฌด๋ฆฌ ๋ด๋ addsubview์ํ ๋ถ๋ถ์ด ์์.. ์๋ฌด๋๋ add๋ ๋ค ํด์คฌ์ง๋ง ๊ทธ ์ฌ์ด์ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฐ๋๊ฑฐ๋ ๋ฑ ์ถฉ๋์ด ์ผ์ด๋๋ ๊ฒ..๊ฐ..ใ
.ใ
ก.ใด..ใ
.... ใ
)
๐ต ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฒํผ์ ๋ฃ์ด์ฃผ์ด์ผํด์ switch๋ฌธ์ ์ด์ฉํด์ func์ ๋ฃ์ด์ค
extension HomeCellListCell {
func setupViews() {
[listImageView, subTitle, title].forEach { addSubview($0) }
listImageView.snp.makeConstraints {
$0.leading.trailing.equalToSuperview().inset(24.0)
$0.width.height.equalTo(40.0)
$0.top.equalToSuperview().inset(20.0)
$0.trailing.equalToSuperview().inset(20.0)
}
subTitle.snp.makeConstraints {
$0.leading.equalTo(listImageView.snp.trailing).offset(24.0)
$0.top.equalTo(listImageView.snp.top)
$0.trailing.equalToSuperview()
}
title.snp.makeConstraints {
$0.top.equalTo(subTitle.snp.bottom).offset(5.0)
$0.leading.equalTo(subTitle.snp.leading)
$0.bottom.equalTo(listImageView.snp.bottom)
$0.trailing.equalToSuperview()
}
switch cellRow?.cellType {
case .account:
setupSendButton()
case .history:
setupHistoryButton()
default:
return
}
}
func setupSendButton() {
addSubview(sendButton)
sendButton.snp.makeConstraints {
$0.trailing.equalToSuperview().inset(24.0)
$0.centerY.equalTo(snp.centerY)
$0.width.equalTo(50.0)
$0.height.equalTo(30.0)
}
}
func setupHistoryButton() {
addSubview(historyButton)
sendButton.snp.makeConstraints {
$0.trailing.equalToSuperview().inset(24.0)
$0.centerY.equalTo(snp.centerY)
$0.width.equalTo(50.0)
$0.height.equalTo(30.0)
}
}
}
์ด๋ ๊ฒ ๋ฃ์ด์ฃผ๊ณ , setupViews() ๋ฉ์๋๋ฅผ final class์ init์ ๋ฃ์ด์ฃผ๋ฉด์ addsubview๋ฅผ ํด์ฃผ์๋ค.
func setup(row: HomeCellListData) {
cellRow = row
setupViews()
}
์ switch ๋ฌธ์ ์ฃผ์์ฒ๋ฆฌํ๊ณ ํ๋ฉด, ์ ์์ ์ผ๋ก ๋์๊ฐ๋๋ฐ switch ๋ฌธ์ด ๋ค์ด๊ฐ๋ฉด ์๋ฌ๊ฐ ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋๋ฒ์ฌ ์ฝ๋์์ cellRow = row ์ฝ๋๋ฅผ ๋ฃ๋ ์๊ฐ๋ถํฐ ์๋ฌ๊ฐ ๋๋ค. ๊ทธ๋๊น ์ฌ๊ธฐ์ ๋ฌด์ธ๊ฐ ์ถฉ๋์ด ์๊ธฐ๋๊ฑฐ ๊ฐ์.. ๊ทธ๋๊น ์ด๊ฒ๋ญ๋๊ณ !!
๐ต ์ฝ์์ฐฝ์ ์์ธํ ๋ซ์ด์ ธ๋ผ ์ณ๋ค๋ด๋ณด์
์ค์ผ์ด ์ผ๋จ ์ด ํ์ผ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋๊ฑฐ ๋ง๊ณ .
๋ญ๊ฐ ํด๋น ํ์ผ line 105 ์์ ์๋ฌ๊ฐ ๋๊ฑฐ๊ฐ์๋ฐ,
๋ญ๊ฐ ํด๋น ๋ฉ์๋๋ฅผ ์คํํ๋๋ฐ ๋ ์ด์์์ ๋จ๋จํ ์๋ชป์ค์ ํ๊ตฌ๋..! ๊น์ง ๊ฐ์ ์ก์ ์ ์์์.
๊ทธ๋์ ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๋ ์ด์์์ ์ ๋ถ ์ฃผ์์ฒ๋ฆฌํ๊ณ ๋๋ ค๋ณด๋๊น
์ด๋ ๊ฒ ๋ด๊ฐ ์ํ๋ ๋ฒํผ๋ค์ด ์ํ๋ cell ์์ ๋ค์ด๊ฐ๋ค!
๐ต ๊ฒฐ๋ก
โ ๏ธ fatalError("Expected superview but found nil when attempting make constraint `equalToSuperview`.")
์ด ์๋ฌ๋, ๋ ์ด์์์ ๋ฌธ์ ๊ฐ ์๊ฒจ์ ๋ทฐ๊ฐ ๋ก๋๋์ง ์์์ ์๊ธด๋ฌธ์ ์๋ค.
์ธํฐ๋ท์ ์ฐพ์๋ณด๋๊น ๋๋ถ๋ถ ํด๋น ์๋ฌ๋ addSubview๋ฅผ ํ์ง ์์์ ์๊ธฐ๋ ๋ฌธ์ ๋ผ๊ณ ํ๋๊น, ์ด ์๋ฌ๊ฐ ์๊ธฐ๋ฉด addSubview๋ฅผ ์ ๋๋ก ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ์ค์ ํ ๋ ์ด์์์ ๋ฌธ์ ๊ฐ ์๋์ง ๋จผ์ ์ดํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.