按钮和图像未添加到设备上的视图(在模拟器中工作)

时间:2011-03-25 17:22:36

标签: nsbundle

我正在尝试从我的主捆绑中加载一个plist,但它运行得不太顺利。我一直在设置一个无效的CFStringRef,导致我想要的所有显示都为零。

使这更奇怪。它在模拟器中完美运行。我已附上此图片以帮助解释。

http://img847.imageshack.us/img847/1185/screenshot20110325at120m.png

这对我没有任何意义。它在模拟器中工作,为什么它不能在设备上工作?

- (void)viewDidLoad {
    [super viewDidLoad];
    imageV = [[UIImage alloc]init];
    imageV = [UIImage imageNamed:[NSString stringWithFormat:@"%@", imageTitle]];


    button = [UIButton buttonWithType:UIButtonTypeCustom];

    CGRect frame = CGRectMake(0, 0, 320, 65);
    button.frame = frame;   // match the button's size with the image size

    [button setBackgroundImage:imageV forState:UIControlStateNormal];




    [button addTarget:self action:@selector(adClicked:) forControlEvents:UIControlEventTouchUpInside];
    button.backgroundColor = [UIColor clearColor];
    [self.view addSubview:button];

    NSLog(@"%i %@", [self.view.subviews count], webLink);

}

在模拟器和设备中,控制台报告每个视图中都有一个子视图。在模拟器中,添加按钮并显示其图像已更改。但是在设备上,按钮不会显示其图像已更改。虽然它说按钮就在那里它根本就没有出现,我也无法与它交互,或者只是没有设置图像。

// addScroller.m 我已经尝试清理目标并将图像直接添加到app文件夹......我什么都没得到。我的下一个赌注是它与我从plist文件或其他东西加载它的事实有关。我确实重命名了ads文件夹,并将其设置为小写,并从头开始。那个plist会引起这个问题吗?是我加载文件框或修改字符串的方式吗?

- (void)viewDidLoad {
    [super viewDidLoad];
    adIndex = 0;
    adTimer = [[NSTimer alloc]init];
    ad = [[Ad alloc]init];
    adsList = [[NSMutableDictionary alloc]init];
    item = [[NSDictionary alloc]init];
    filePath = [[NSString alloc]init];

        filePath = [[NSBundle mainBundle] pathForResource:@"Ads" ofType:@"plist"];
    NSLog(@"%@", filePath);
        adsList = [[[NSMutableDictionary alloc] initWithContentsOfFile:filePath]retain];

        for (int i = 0; i < [adsList count]; i++) {
            item = [[NSDictionary alloc]init];
            item = [adsList valueForKey:[NSString stringWithFormat:@"%i", i ]];
            ad = [[Ad alloc] initWith:[item objectForKey:@"adImage"] Link:[item objectForKey:@"website"]];

            //[ads addObject:a];

            ad.view.frame = CGRectMake(320 * i, 0, 320, 65);

            [adsView addSubview:ad.view];

            [item release];
        }
        [adsView setContentSize:CGSizeMake(320 * [adsList count], 65)];
        adsView.pagingEnabled = YES;

    adIndex = HBRandomInt([adsList count]);
    [self scrollAds];
   [NSTimer scheduledTimerWithTimeInterval:8.0 
                                 target:self 
                               selector:@selector(scrollAds) 
                               userInfo:nil
                                repeats:YES];
    //[adTimer release];
    //[ad release];
    //[item release];
    //[adsList release];

}
编辑:我在应用程序的其他位置加载了图片并且工作正常

2 个答案:

答案 0 :(得分:0)

请勿使用[[NSString alloc] init];

尝试NSString *filePath = nil;

答案 1 :(得分:0)

模拟器(Mac)不区分大小写。该设备是。这通常会导致在设备上加载资源时出现问题,这些问题似乎在模拟器中运行得很好。