0

出于某种原因,我无法将图片相册放入我的 UIImageView。它被添加到情节提要中并声明:

@property (strong, nonatomic) IBOutlet UIImageView *displayAlbum;
@synthesize displayAlbum, titleLbl, artist;

在我的代码中:

displayAlbum = [[UIImageView alloc] init];

MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:@"1079287588763212246" forProperty:MPMediaEntityPropertyPersistentID];
MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query addFilterPredicate: predicate];
NSArray *queryResults = [query items];

for (MPMediaItem *song in queryResults) {
MPMediaItemArtwork *artwork = [song valueForProperty: MPMediaItemPropertyArtwork];
[displayAlbum setImage: [artwork imageWithSize:CGSizeMake(displayAlbum.frame.size.width, displayAlbum.frame.size.height)]];
        }

我能够获得其他歌曲信息,所以它肯定会得到正确的歌曲,但ImageView总是显示为空白。

附带说明一下,如果有人可以帮助我清理上面的代码,尤其是摆脱for循环(无论如何它应该总是只返回一个结果),那就太好了。谢谢

4

2 回答 2

2

这是因为您正在使用 alloc init 创建一个新的图像视图,而不是使用您在 IB 中创建的那个。您应该只删除该 alloc init 行。

于 2013-08-28T05:10:08.600 回答
0

当它是 IBOutlet 时,为什么要分配 displayAlbum?如果它已经在 NIB 中制作,那么通过分配新的,它应该不起作用,因为您将拥有完全新的 UIImageView,它不是您的视图控制器的一部分。如果它不是在 NIB 中制作的,那么您应该通过添加一些视图的子视图来将其添加到视图控制器中,这些视图是视图控制器的一部分,并为其设置一些框架。

首先,尝试评论这一行:

displayAlbum = [[UIImageView alloc] init];

于 2013-08-28T05:15:14.043 回答