- (void)带有NSMutableArray的loadView

时间:2014-08-18 03:47:46

标签: ios objective-c loadview

- (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。那是为什么?

PS。 NSMutableArray在-(void)loadView中完美运行。我在@interface .h文件中声明了NSMutableArray * arrayOfImage

2 个答案:

答案 0 :(得分:0)

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

只有在arrayOfImages被声明为弱变量时才可以这样做。

但正如@maddy指出的那样,你的代码都是错的:不要打电话给super,而是分配self.view。或者使用viedDidLoad代替(可能是你想要的)。

答案 1 :(得分:-1)

-(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]);

这样可以,但你只能看到1张照片。即数组0索引中的图片。

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