查看CollectionView项目

时间:2017-07-23 16:56:27

标签: swift macos collectionview

我正在将具有CollectionView的应用程序从Objective C转换为Swift 4.0。我有很多转换,但我遇到了显示子视图然后选择CollectionViewItem类中的按钮的问题。我在主故事板上定义了我的集合视图,并为集合视图项创建了一个单独的类(CollectionViewItem)和xib(就像Ray Wenderlich在CollectionView上的tut一样)。

mainstoryboard

CollectionViewItem

然后我为子视图(ShowSongInfo)做了同样的事情。

...没有足够的信誉来发布ShowSongInfo视图,但是它不是很简单,只有一个标签和按钮(它会解散控制器)。

我将CollectionViewItem视图中的信息按钮绑定到CollectionViewItem的类的IBAction:

@IBAction func songInfoPressed(_ sender: Any) {
        var name = " "
        if let song = song {
            name = song.fileName
        }
        
        
        let subview = ShowSongInfo(nibName: NSNib.Name(rawValue: "ShowSongInfo"), bundle: nil)
        self.view.addSubview(subview.view)
        
        print(name)
    }

在ShowSongInfo类中,在ViewDidLoad方法中,我输入了一个print语句来验证是否正在调用Class:

override func viewDidLoad() {
        super.viewDidLoad()
        print("SongInfoDidLoad")
        // Do view setup here.
    }

两个打印语句都出现在日志中;没有记录错误,但ShowSongInfo子视图从不显示。

我不确定我的尝试是可行的。在Objective C App中,我使用工作表来显示歌曲标签信息。在这里,我会喜欢表单效果或者可能是popover,但是现在我喜欢ShowSongInfo窗口只是出现。任何帮助或建议将不胜感激。

Hello El,主ViewController(ViewController.swift)设置在带有三个场景的标签视图中; “播放”是初始视图。第二个选项卡是“Playlist”,PlaylistVC.swift作为其ViewController,Extract第三个,ExtractVC是ViewController。 CollectionView在初始视图/场景,播放中设置。

CollectionViewItem被设置为它自己的类和它自己的xib文件。由于它不是主要故事板的一部分,因此它在最初的ViewController.swift扩展名NSCollectionViewDataSource中绑定.-

func collectionView(_ collectionview: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
    let item = collectionViewItem.makeItem(withIdentifier: NSUserInterfacetemIdentifier(rawValue: "CollectionViewItem"), for: indexPath)
    guard let collectionViewItem = item as? CollectionViewItem else {return item}
    let song = directoryDataLoader.songFileForIndexPath(indexPath)
    collectionViewItem.song = song
    return item
}

目前尚未使用AppDelegate,但我将使用它来集成菜单命令。

希望这有帮助。

0 个答案:

没有答案