使用UITableView時,我們可以使用[[ UITableViewCell alloc] initWithStyle: reuseIdentifier:]
和[uiTableViewInstance dequeueReusableCellWithIdentifier:]
方法重用其單元格。這有助於保持內存檢查巨大的表格,因爲在給定時刻只有少數單元存在於視圖中。如何重用/回收像uitableviewcell自定義元素呢?
我想創建一個UIScrollView
,它有許多子視圖。插入所有的子視圖佔用大量的內存和我想避免的初始時間。 Apple API是否提供了重用這些自定義組件(UIView或其子類)的方法,就像使用標識符的單元視圖一樣?
如果沒有API,我會創建一個,但對此有疑問。例如,對於每個新的子視圖,我都會在前面的視圖之後設置其框架位置。如何在回收時更新每個子視圖的框架?我應該刪除並重新加載每個子視圖的內容,因爲它被回收?我是否應該在另一個線程中執行所有這些計算以避免生成滾動?總而言之,我想要像UITableView那樣使用所有重用內容的平滑滾動體驗。
這裏是一個代碼示例,我至今寫:
int numberOfPages = 0;
int pageWidth = 100;
int pageHeight = 100
UIScrollView *myScrollView = //allocate and initialize a scrollview
//set its size to 100 by 100 (width equal to pageWidth)
//set paging enabled for myScrollView
從方法添加子視圖它,那會被多次調用
- (void) appendSubViewToScrollView {
UIView *view = //allocate and initialize a view and dump data in it.
CGRect rect = view.frame;
rect.size.height = pageHeight;
rect.size.width = pageWidth;
rect.origin = CGPointMake(pageHeight * numberOfPages, 0);
view.frame = rect;
[myScrollView addSubview:view];
numberOfPages++;
[scrollView setContentSize:CGSizeMake(pageHeight * numberOfPages, pageWidth)];
[view release];
}
編輯:
一些見解進入tableview和它的單元格如何實現這個幕後會很有用。
感謝您的回覆Viggio。有沒有與此相關的一些代碼?我可以使用一些參考。是的,我是註冊開發者。你能指出這個案例的相關視頻嗎? (「應用程序框架」?我會休閒地看休息)。我也會下載示例代碼。看起來有趣和有用。 – Sailesh 2011-02-06 17:03:35