當談到可可編程時,我是一個相當新手,所以我希望有些專家可以提示我正確的方向與我面臨的問題。問題與NSCollectionView
我有一個NSCollectionView綁定到NSArrayController(A)的元素有兩個屬性:一個圖片的URL和另一個類的元素的NSArray(B)。 對於NSArrayController(A)中的每個元素,我加載一個帶有NSImageView的子視圖,該視圖應該在URL中顯示圖像並綁定到NSArray(B)元素的NSTableView。
一切工作正常,除了一個非常重要的事情:當我創建子視圖時,圖片的URL不是立即可用,它稍後可用,但是當它時,我看不到圖片加載NSImageView。 我會想到KVC/KVO實現中的一個問題,但奇怪的是,如果URL可用時子視圖不可見(例如,在未顯示的部分滾動視圖中) 。
示例:NSScrollview大小一次只能顯示兩個子視圖。我向NSArrayController(A)添加了三個元素:前兩個圖像不加載,如果向下滾動scrollview以查看第三個元素,則會發現圖像加載正確。
任何關於什麼可能會導致這樣一個奇怪的行爲的想法? 預先感謝您
盧卡
series.h
@interface Series : NSObject {
@private
NSMutableString * banner;
}
-(Series*)initWithEpisode:(Episode*)ep;
-(void)setBanner:(NSString*)_banner;
@property (retain, readwrite) NSMutableString *banner;
@end
series.m
@implementation Series
@synthesize banner;
-(Series*)initWithEpisode:(Episode*)ep
{
self = [super init];
if(self){
banner = [[NSMutableString alloc]initWithString:@"some invalid URL"];
}
-(void) setBanner:(NSString*)_banner
{
[banner setString:[NSString stringWithFormat:@"some root path/%@", _banner];
}
-(void)dealloc
{
[super dealloc];
[banner release];
}
SeriesListViewController.m
-(void)VideoChangedStatus:(Episode*)ep{
//This is the delegate called by the object Episode when it retrieves the URL via asynchronous call to a webservice
Series *tmp = [[Series alloc]initWithEpisode:ep];
[[seriesList objectAtIndex:[seriesList indexOfObject:tmp]]setBanner:[ep banner]];
}
在子視圖筆尖文件完成後,到NSImageView結合:我設置類型NSCollectionViewItem的文件擁有者,然後綁定Valueurl到representedObject.banner 我沒有繼承NSCollectionView也不NSCollectionViewItem
描述你如何「載入圖像」。當URL可用時究竟發生了什麼?你如何更新你的模型(KVO-通知財產)?你如何更新你的視圖(綁定?)。 – 2011-06-09 14:15:25
感謝您的回覆! NSImageView的urlvalue屬性綁定到名爲「banner」的NSMutableString。當URL變爲可用時,通過名爲setBanner的方法將標題值更改爲新的URL – Luca 2011-06-09 14:55:37
信息不足。爲了清晰起見,描述綁定*完全* - 每個方面。 *完全描述「banner」屬性*(它是帶有@synthesize訪問器或自定義訪問器的Objective-C 2.0 @property?該屬性屬於哪個對象?該對象是存儲在數組控制器還是其他位置?)。幫助我們幫助你。 – 2011-06-09 15:05:53