2011-03-25 76 views
0

我想從我的主包中加載一個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 我試過清洗目標並將圖像直接添加到應用程序文件夾中...我什麼都沒有。我的下一個賭注是它與我從plist文件或其他東西加載它的事實有關。我確實重命名了廣告文件夾,並將其設置爲小寫字母,並從頭開始。 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]; 

} 

編輯:我裝在其他地方的應用程序的圖片和它工作得很好

回答

0

模擬器(蘋果機)是不區分大小寫。該設備是。這通常會導致加載模擬器中似乎可以正常工作的設備上的資源時出現問題。

0

不要使用[[NSString alloc] init];

嘗試NSString *filePath = nil;

+0

它沒有工作我不知道什麼是@ __ @ – Ohmnastrum 2011-03-26 17:33:41

+0

你嘗試過'initWithContentsOfFile:filePath'而不是'dictionaryWithContentsOfFile:filePath'嗎? – WrightsCS 2011-03-26 17:44:30

+0

好的工作。但現在的問題是,當它在模擬器中創建並加載視圖時,視圖會顯示,但在設備上它不會顯示。相同的代碼,但它只是不會顯示在設備上。我應該更新這個問題。 – Ohmnastrum 2011-03-27 01:25:46

相關問題