代码之家  ›  专栏  ›  技术社区  ›  Liz Fleming

无法在模拟器中查看表视图和自定义单元格

  •  0
  • Liz Fleming  · 技术社区  · 3 年前

    我是Xcode新手,正在为一个有两个视图控制器的类完成一项作业。在第一个视图控制器上查看表视图没有问题,但在模拟器的第二个视图控制器中无法查看表视图。

    Simulator Storyboard 我有表视图的委托和数据源出口,还有第二个视图控制器类中的一个附加类,用于链接自定义单元格的出口。 tableViewOutlets customCellOutlets

    第一个视图控制器显示相册列表。如果添加或编辑,则第二视图控制器中会有一个序列,允许更改相册,底部有一个表视图,可以在其中添加或编辑曲目。我不介意看到你在截图中看到的专辑细节。

    以下是我为第二视图控制器(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显示了轨迹列表,但它也有同样的问题,无法看到表视图。感谢你的任何想法!

    0 回复  |  直到 3 年前