저는 현재 Uber, half Tinder와 같은 기능을 갖춘 앱을 개발 중입니다.하나의 tableView에서 다양한 유형의 셀을 만드는 방법은 무엇입니까?
프로파일 편집을 위해 TableView를 작성하여 Tinder의 프로파일 편집보기를 볼 수있게 만들고 싶습니다.
프로필 이미지를 가져 오는 첫 번째 셀과 textLabel의 두 번째 셀을 성공적으로 만들었습니다.
편집 가능한 TextView가있는 세 번째 셀을 만들고 싶습니다. 사용자가 여러 줄의 단어를 입력 할 수 있도록 textField가 아닙니다. 그러나 코드는 의도 한대로 작동하지 않습니다.
사용자 지정 셀 클래스에서 textView를 만들고 내 tableViewController 클래스의 세 번째 tableView 셀로 설정했지만 시뮬레이터에 나타나지 않는 것처럼 보입니다.
하나의 tableView에 대해 여러 유형의 셀을 만드는 좋은 방법이 무엇인지 아직 확실하지 않으므로 다른 방법이 있다면 알아두면 좋을 것입니다.
이 문제와 관련된 내 코드는 다음과 같습니다.
의 ViewController
//EditProfileViewController For The Profile Edit view
class EditProfileViewController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
TableViewController
//MyTableViewController for the EditProfileViewController
class EditProfileTableViewController: UITableViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate, UITextViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 3
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return 5
} else if section == 1 {
return 2
} else {
return 4
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//link my custom Cell here
if let cell = tableView.dequeueReusableCell(withIdentifier: "MyCustomCell", for: indexPath) as? MyCellTableViewCell {
if indexPath.section == 0 {
if indexPath.row == 0 {
//this row is for an Image Picker
cell.textLabel?.text = "edit profile image"
} else if indexPath.row == 1 {
//this row is just like a title of third cell which is editable self description
cell.textLabel?.text = "Describe yourself"
cell.isUserInteractionEnabled = false
} else if indexPath.row == 2 {
//this row is an editable self description
cell.addSubview(cell.selfDescritionTextView)
cell.selfDescritionTextView.delegate = self
cell.selfDescritionTextView.isEditable = true
cell.selfDescritionTextView.text = "Enter some descriptions here"
}
}
else if indexPath.section == 1 {
cell.textLabel?.text = "section 1"
}
else if indexPath.section == 2 {
cell.textLabel?.text = "section 2"
}
return cell
} else {
//Just in case
return UITableViewCell()
}
}
}
TableViewCell
//MyCellTableViewCell
class MyCellTableViewCell: UITableViewCell {
//create a textView for self description
var selfDescritionTextView = UITextView()
//init
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: .default, reuseIdentifier: "MyCustomCell")
selfDescritionTextView = UITextView(frame: self.frame)
self.addSubview(selfDescritionTextView)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
여기서 보여준 것보다 많은 코드를 알고 싶다면 알려 주시기 바랍니다.
프로필 편집보기를 만드는 데이 방법에 사로 잡히지 않으므로 누구나 이보다 다른 방법을 더 잘 알고 있다면 잘 알고 싶습니다.
감사
모든 셀이 테이블보기에 포함되어 있습니까? 모든 셀에 맞춤 클래스가 있습니까? –
중단 점을 사용하고 조건에 따라 컨트롤이 cellForRow를 통해 전달되는지 확인할 수 있습니다. if cell = tableView.dequeueReusableCell (withIdentifier : "MyCustomCell", for : indexPath)? MyCellTableViewCell – MBN
그리고 MyCellTableViewCell에 대한 스토리 보드 또는 사용자 정의 셀 xib에서 tableview 프로토 타입 셀을 사용하고 있습니까? – MBN