在表格视图上显示名称

时间:2019-05-01 09:52:10

标签: ios swift uitableview uiviewcontroller

我需要使用表视图将thirdviewcontroller上的播放列表的所有名称加载到表视图,但这是行不通的。

我试图在第三个视图控制器上显示具有已创建播放列表的所有名称的表视图(我创建了一个数组,其中包含我自己创建的类播放列表的元素)。在该视图确实加载了func的情况下,我已经创建了两个播放列表,但是当我尝试使用该应用程序时,名称不会显示在表格视图中。

我试图重写代码,再次链接表视图并再次创建视图,但是它不起作用。它还不会显示任何类型的故障或意外关闭应用程序。

我是Swift的新手,所以我不知道我是否还会做其他错误的事情。

这是项目(开发分支): tree/develop

//
//  ThirdViewController.swift
//  reproductor
//
//  Created by Macosx on 24/4/19.
//  Copyright © 2019 mamechapa. All rights reserved.
//

import UIKit
import AVFoundation


var favorites:[String] = []
var Playlists:[Playlist] = []

class ThirdViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var myTableView2: UITableView!

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        print(Playlists.count)
        return Playlists.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: .default, reuseIdentifier: "cell")
        cell.textLabel?.text = Playlists[indexPath.row].name

        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        //
    }
    override func viewDidLoad() {
        print("viewdidload")
        super.viewDidLoad()

        crear()

        myTableView2.reloadData()
        print(Playlists[1].name)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func crear(){

        let pl1 = Playlist(name: "Prueba")

        pl1?.addSong(song: songs[0])
        Playlists.append(pl1!)
        print(Playlists[0].name)
        print(Playlists[0].songs[0])

        let pl2 = Playlist(name: "Prueba2")

        pl2?.addSong(song: songs[1])
        Playlists.append(pl2!)
        print(Playlists[1].name)
        print(Playlists[1].songs[0])
    }


}

4 个答案:

答案 0 :(得分:1)

您的数据是数据源,显示的是您的委托。您必须设置数据源和委托。您必须设置tableView dataSource和Delegate

myTableView2.delegate = self
myTableView2.dataSource = self

什么是delegate

UITableViewDelegate

UITableViewDataSource

答案 1 :(得分:0)

将Delegate和DataSource设置为myTableView2,因此在viewDidLoad函数中添加以下两行,然后重新加载myTableView2。

"Task finished normally."

答案 2 :(得分:0)

您需要将UITableViews’s委托和数据源设置为等于self。

myTableView2.delegate = self;
myTableView2.dataSource = self;

viewDidLoad()之后在super.viewDidLoad().进行此操作

答案 3 :(得分:0)

从给定的github位置下载了您的代码。

在我的末端效果很好。下面是图像:

enter image description here

顺便说一句好听的歌曲!