Пример #1
0
        public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
        {
            var cell = tableView.DequeueReusableCell(MediaItemTableViewCell.Key, indexPath) as MediaItemTableViewCell;

            var mediaItem = mediaItems [indexPath.Section] [indexPath.Row];

            cell.MediaItem = mediaItem;
            cell.Delegate  = this;

            // Image loading.
            var imageUrl = mediaItem.Artwork.GenerateImageUrl(new CGSize(90, 90));

            if (imageCacheManager.GetCachedImage(imageUrl) is UIImage image)
            {
                // Cached: set immediately.
                cell.AssetCoverArt = image;
            }
            else
            {
                cell.AssetCoverArt = indexPath.Section == 0 ? UIImage.FromBundle("Song") : UIImage.FromBundle("Album");
                // Not cached, so load then fade it in.
                Task.Factory.StartNew(async() => {
                    image = await imageCacheManager.FetchImage(imageUrl);

                    // Check the cell hasn't recycled while loading.
                    if (cell.MediaItem.Id == mediaItem.Id)
                    {
                        InvokeOnMainThread(() => cell.AssetCoverArt = image);
                    }
                });
            }

            var cloudServceCapabilities = AuthorizationManager.CloudServiceCapabilities;

            /* It is important to actually check if your application has the
             * appropriate `SKCloudServiceCapability` options before enabling
             * functionality related to playing back content from the Apple
             * Music Catalog or adding items to the user's Cloud Music Library.
             */
            cell.AddToPlaylistButtonEnabled = cloudServceCapabilities.HasFlag(SKCloudServiceCapability.AddToCloudMusicLibrary);
            cell.PlayItemButtonEnabled      = cloudServceCapabilities.HasFlag(SKCloudServiceCapability.MusicCatalogPlayback);

            return(cell);
        }