-(void) loadView with NSMutableArray


- (void)loadView 
{
    [super loadView];
    arrayOfImages = [[NSMutableArray alloc]initWithObjects:@"11.jpg",@"22.jpg",@"33.jpg", nil];       
    UIImageView *awesomeView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    [awesomeView setImage :[UIImage imageNamed:[arrayOfImages objectAtIndex:0]]];
    awesomeView.contentMode = UIViewContentModeScaleAspectFit;
    [self.view addSubview:awesomeView]; 
    NSLog(@"%@",[arrayOfImages objectAtIndex:0]);
}

当我把NSMutableArray放在-(void)viewDidLoad时,UIImageView显示无,NSLog显示NULL。为什么呢?

p。NSMutableArray在-(void)loadView中工作得很好。我已经在@interface .h文件中声明了NSMutableArray *arrayOfImage

在这种情况下,给定的唯一可能输出"NULL"的方法是arrayOfImages本身就是NULL

这只有在将arrayOfImages声明为弱变量时才有可能。

但是正如@maddy指出的,你的代码都是错误的:不要调用super,而是分配self.view。或者使用viedDidLoad代替(可能是您在这里想要的)。

-(void)loadView 
{
   [super loadView];
    arrayOfImages = [[NSMutableArray alloc]initWithObjects:[UIImage imageNamed:@"11.jpg"],[UIImage imageNamed:@"22.jpg"],[UIImage imageNamed:@"33.jpg"], nil];       
    UIImageView *awesomeView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
[awesomeView setImage :[UIImage imageNamed:[arrayOfImages objectAtIndex:0]]];
awesomeView.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:awesomeView]; 
NSLog(@"%@",[arrayOfImages objectAtIndex:0]);

这将工作,但你将只能看到一张图片。在数组的第0个索引中显示图片

如果你想显示所有,那么你必须应用一个循环。

相关内容

  • 没有找到相关文章

最新更新