我是Xcode新手,正在为一个有两个视图控制器的类完成一项作业。在第一个视图控制器上查看表视图没有问题,但在模拟器的第二个视图控制器中无法查看表视图。
我有表视图的委托和数据源出口,还有第二个视图控制器类中的一个附加类,用于链接自定义单元格的出口。
第一个视图控制器显示相册列表。如果添加或编辑,则第二视图控制器中会有一个序列,允许更改相册,底部有一个表视图,可以在其中添加或编辑曲目。我不介意看到你在截图中看到的专辑细节。
以下是我为第二视图控制器(AlbumDetailViewController)编写的代码:
class AlbumDetailViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var tracks: [TrackObject] = []
var albumViewController: AlbumViewController!
var itemIndex = 0
var cell: TrackCell!
@IBOutlet weak var titleTextField: UITextField!
@IBOutlet weak var artistTextField: UITextField!
@IBOutlet weak var yearTextField: UITextField!
@IBOutlet weak var labelTextField: UITextField!
@IBOutlet weak var reviewTextField: UITextField!
@IBOutlet weak var trackListTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
titleTextField.text = albumViewController.albums[itemIndex].title
artistTextField.text = albumViewController.albums[itemIndex].artist
yearTextField.text = albumViewController.albums[itemIndex].year
labelTextField.text = albumViewController.albums[itemIndex].label
reviewTextField.text = albumViewController.albums[itemIndex].review
}
@IBAction func savePressed(_ sender: UIButton) {
albumViewController.albums[itemIndex].title = titleTextField.text!
albumViewController.albums[itemIndex].artist = artistTextField.text!
albumViewController.albums[itemIndex].year = yearTextField.text!
albumViewController.albums[itemIndex].label = labelTextField.text!
albumViewController.albums[itemIndex].review = reviewTextField.text!
albumViewController.albumTableView.reloadData()
}
@IBAction func cancelPressed(_ sender: UIButton) {
if albumViewController.newFlag {
albumViewController.albums.remove(at: itemIndex)
albumViewController.albumTableView.reloadData()
albumViewController.newFlag = false
}
}
@IBAction func pressedEditTrack(_ sender: UIButton) {
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tracks.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "trackListCell", for: indexPath) as! TrackCell
let track = tracks[indexPath.row]
cell.title?.text = track.title
cell.number?.text = track.number
cell.length?.text = track.length
return cell
}
}
class TrackCell: UITableViewCell {
@IBOutlet weak var title: UITextField?
@IBOutlet weak var number: UITextField?
@IBOutlet weak var length: UITextField?
}
我还有另外两个类存储相册和曲目的对象。我可以轻松访问他们的数据,只需查看表视图及其单元格。
我已经尝试并研究了SO上的其他帖子,但我能够找到解决我问题的方法。我有一种感觉,我的viewWillExample方法中缺少了一个组件。我也有这个项目的另一个版本,我在第三个视图控制器中通过视图控制器2的另一个segue显示了轨迹列表,但它也有同样的问题,无法看到表视图。感谢你的任何想法!