2011-05-26 64 views
0

對iphone開發非常新穎,我似乎無法弄清楚爲什麼會發生這種情況。我敢肯定,它有一些事情與事實,即boardView是n它創建一個新的事實。但即時通訊圖像應用到新形成的imageView,所以我不知道發生了什麼事情。像我說的,一切正常。我收到我的物品列表,點擊一個物品,然後轉到下一頁,並顯示正確的圖像(除第一次以外)。下一個視圖第一次顯示錯誤的圖像

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    NSInteger row = [indexPath row]; 

    if(self.boardView == nil){ 
     BoardView *aboardView = [[BoardView alloc]initWithNibName:@"BoardView" bundle:nil]; 
     self.boardView = aboardView; 
     [aboardView release]; 
    } 

    NSString *filePath = [[NSBundle mainBundle] pathForResource:[snowBoardArray objectAtIndex:row] ofType:@"png"]; 
    UIImage *theImage = [[UIImage alloc] initWithContentsOfFile:filePath]; 
    self.boardView.imageView.image = theImage; 

    [theImage release]; 
    [self.navigationController pushViewController:self.boardView animated:YES]; 
} 

boardView幾乎是一片空白的UIViewController與具有添加的ImageView

回答

3

你可以添加這一行,雖然它的一點點黑客。您必須訪問viewcontroller的視圖,以便創建它。您可以通過修改任何views屬性來避免編譯器警告。我會建議做以下事情。

self.boardView.view.hidden = NO; 

我有這個問題,你所要做的就是調用視圖來創建。儘管像self.boardView.view;這樣的簡單行應該足夠了,以避免編譯器警告更改隱藏屬性。

+0

非常感謝你的工作。我在if語句之後添加了這行,看看它是否爲零。 – 2011-05-26 14:26:28

+0

只是所以我明白imageView被創建,但uiViewController不是?那就是這個聲明啓動 – 2011-05-26 14:31:17

+0

它創建了一個視圖,它會創建其中的其他小部件。 – 2011-05-26 14:36:33

2

雖然你創建BoardView控制器其視圖層次結構可能尚未創建的例外 - 正在顯示控制器,只有當它被啓動。所以,當你試圖展示它的第一次所有的UI元素仍然等於零,您的電話

self.boardView.imageView.image = theImage; 

什麼都不做。

作爲可能的解決方案,將UIImage作爲BoardView控制器的獨立屬性,將其設置爲didSelectRowAtIndexPath方法,並在確定創建了imageView時將圖像分配給imageView。在控制器的viewWillAppear:方法

+0

嘿弗拉德米爾,你如何評價我的解決方案?它在一個應用程序中爲我工作。 – 2011-05-26 14:15:51

+0

@Praveen,我喜歡它:)絕對值得+1 – Vladimir 2011-05-26 14:18:13

+0

即時通訊對不起,像我說的即時通訊非常新的iPhone開發。我讀了很多遍,但沒有真正知道如何實現它。反正我試了下面的答案,那工作。感謝您的回覆 – 2011-05-26 14:27:12

相關問題