2012-06-29 103 views
1

我一直在與iCarousel搞混了(linky:https://github.com/nicklockwood/iCarousel)一段時間了,還有一件事我無法理解。iCarousel多個筆尖

它將2個或更多的筆尖裝入一個旋轉木馬。這是當前的代碼來加載相同的筆尖在轉盤中的所有項目:

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view 
{ 
if (!view) 
{ 
    //load new item view instance from nib 
    //control events are bound to view controller in nib file 
    view = [[[NSBundle mainBundle] loadNibNamed:@"ItemView" owner:self options:nil] lastObject]; 

     } 
return view; 
} 

這是從ControlsDemo在iCarousel標準代碼。

我是否正確地說,可以將一個簡單的If語句應用於上面的代碼,以便爲每個項目使用不同的筆尖填充旋轉木馬?

或者我將不得不在開始時加載一個nib文件數組,並在上面的方法中引用它們?

還是有一種完全不同的方式來做到這一點?

回答

0

這個問題非常簡單,我過了很大的時間複雜化了。

下面是我添加到上面的示例來修復它的代碼:

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view 
{ 
    if (index == 0) { 
     view = [[[NSBundle mainBundle] loadNibNamed:@"nib1" owner:self options:nil] lastObject]; 
    } else { 
     view = [[[NSBundle mainBundle] loadNibNamed:@"nib2" owner:self options:nil] lastObject]; 
    } 
    return view; 
} 
+1

這是不完全正確。您需要刪除if(!view)檢查,因爲如果您針對不同的項目索引返回不同的視圖類型,則對於回收視圖是不安全的。 –

+0

當運行時試圖加載多個筆尖顯示錯誤,但筆尖未加載時,應用程序會崩潰如何解決此問題 – Harish