0

たぶん、私の問題を解決するのを手伝ってくれる誰かがそこにいるでしょう。cocoalibspotify を使用してプレイリスト項目を表示できないようです。プレイリストビューを設定しましたが、最初のableviewcontrollerにプレイリストが表示されますが、選択したプレイリストのアイテムを呼び出そうとすると、出力が表示されるように行数が0になるようです。最初のビューは、indexpath を secondviewcontroller に渡す方法を示しています。2 番目のスクリプトは、playlistitemsTavle ビュー コントローラーの .h ファイルと .m ファイルを表示します。

Overview.m - プレイリストを含む tableView

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [playlistView deselectRowAtIndexPath:indexPath animated:NO];
    playlistItemViewController *trailsController = [[playlistItemViewController alloc] initWithStyle:UITableViewStylePlain];
    trailsController.currentPlaylist = [playlistArray objectAtIndex:indexPath.row];
    //[[self navigationController] pushViewController:trailsController animated:YES];
    [self getSongs];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"showPlaylistItem"]) {
        UITableViewCell *BasicCell = (UITableViewCell *) sender;
        NSIndexPath *ip = [self.tableView indexPathForCell:BasicCell];
        SPPlaylist *selectedPlaylist = [playlistArray objectAtIndex:ip.row];

        playlistItemViewController *pivc = (playlistItemViewController *) segue.destinationViewController;
        pivc.currentPlaylist = selectedPlaylist;
    }
}

プレイリストアイテムViewController.h -

   #import <UIKit/UIKit.h>
    #import "CocoaLibSpotify.h"
    #import "Simple_PlayerAppDelegate.h"
    #import "overViewController.h"


    @interface playlistItemViewController : UITableViewController

    {
        UITableView *tableView;
    }

    @property (retain, nonatomic) IBOutlet UITableView *tableView;

    @property (strong, readwrite, nonatomic) SPPlaylist *currentPlaylist;




    @end

playlistViewController.m - プレイリスト アイテムを呼び出す必要があります。

#import "playlistItemViewController.h"


@interface playlistItemViewController ()

@end


@implementation playlistItemViewController {

}

@synthesize currentPlaylist;
@synthesize tableView;



- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}


- (void)viewDidLoad
{
    [super viewDidLoad];

}



- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    NSLog(@"numberOfRowsInSection: %d",[[currentPlaylist items] count]);
    return [[currentPlaylist items] count];
}

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"SubtitleCell";
    UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    cell.textLabel.text = [[[currentPlaylist items] objectAtIndex:indexPath.row] valueForKey:@"name"];

    return cell;


    if (indexPath.row == 0) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"SubtitleCell"];
        [[cell.backgroundView  superview] bringSubviewToFront:cell.backgroundView];
        cell.textLabel.text = @"";
    }
    else{
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"SubtitleCell"];
        }
        SPPlaylistItem * item = [[currentPlaylist items] objectAtIndex:[[currentPlaylist items]count] - indexPath.row];
        cell.textLabel.text = [item.item name];

        if (item.itemClass == [SPTrack class]) {
            SPTrack * track = item.item;
            cell.detailTextLabel.text = [track consolidatedArtists];
        }

    }
    return cell;


}


@end
4

1 に答える 1

0

アイテムが利用可能になる前に、プレイリストが読み込まれるまで待つ必要があります。

プレイリスト ビュー コントローラーはSPAsyncLoading、プレイリストをロードするために使用する必要があります。

[SPAsyncLoading waitUntilLoaded:self.currentPlaylist timeout:kSPAsyncLoadingDefaultTimeout then:^(NSArray *loadedItems, NSArray *notloadedItems) {
    [self.tableView reloadData];
}];

プレイリストの読み込みには時間がかかる場合があるため、「読み込み」UI を用意してください。名前を使用できるようにするには、表示されているトラックも同様の方法でロードする必要があります。

于 2013-07-22T12:07:26.330 に答える