tôi đã cùng một vấn đề và làm điều đó với sau Hack;)
Sự cố: Tôi cần có chế độ xem chỉ hiển thị 3 mục luôn được căn trái.
Độ phân giải: Điều tôi đã làm là luôn tạo ra ít nhất 3 mục. Nếu tôi có 0, 1 hoặc 2 mục tôi luôn tạo 3, nhưng những thứ không cần hiển thị, tôi đang tạo UIView rỗng. Tôi luôn có 2 trình giữ chỗ, nhưng trong một số trường hợp, một hoặc cả hai đều trống.
ví dụ: Nếu chúng tôi có 2 mục để hiển thị, tôi thực sự đang tạo ba mục, nhưng thứ ba là trống UIView. Tôi đang tạo hai trình giữ chỗ và một Mục.
- mục đầu tiên là đầu tiên placeholder tại index 0
- mục thứ hai là mục
- Thứ ba mục là thứ hai placeholder nhưng với UIView trống
Nếu chúng ta có 1 mặt hàng để hiển thị, một lần nữa tôi đang tạo ba, nhưng thứ hai và thứ ba là rỗng UIView. Giống như trong ví dụ trước, tôi đang tạo hai trình giữ chỗ và một Mục.
- mục đầu tiên là đầu tiên placeholder tại index 0
- mục thứ hai là mục nhưng với UIView trống
- Thứ ba mục là thứ hai placeholder nhưng với UIView trống
Vì của logic này tôi luôn luôn làm sạch xem khi tái sử dụng ([v removeFromSuperview]), để chắc chắn nó là sạch sẽ và nếu mới cần phải được hiển thị tôi thêm ing it ([xem addSubview ...). Cùng logic cho mục và Placeholder
Nếu bạn cần phải có nhiều hơn 3 hiển thị mục bạn có thể sử dụng cùng một logic, nhưng sự thay đổi giá trị từ 3 đến cái gì khác. Nếu tôi sai cập nhật me;)
Đây là một phần của mã tôi làm việc cho tôi;)
- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
return [[self getRecordings] count] > 3? [[self getRecordings] count] - 2: 1;
}
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
if (view == nil)
{
view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
}
else
{
// If reusing remove content from holder view for fake items
for (UIView *v in view.subviews)
{
[v removeFromSuperview];
}
}
if ([[self getRecordings] count] >= 2)
{
[view addSubview:[(RecordingItemViewController*)[_recordingItemViewControllers objectAtIndex:index + 1] view]];
}
return view;
}
- (NSUInteger)numberOfPlaceholdersInCarousel:(iCarousel *)carousel
{
return 2;
}
- (UIView *)carousel:(iCarousel *)carousel placeholderViewAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
if (view == nil)
{
view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
}
else
{
// If reusing remove content from holder view for fake items
for (UIView *v in view.subviews)
{
[v removeFromSuperview];
}
}
if (([[self getRecordings] count] > 0 && [[self getRecordings] count] < 3 && index == 0) || [[self getRecordings]count] >= 3)
{
[view addSubview:[(RecordingItemViewController*)(index == 0? [_recordingItemViewControllers objectAtIndex:0]: [_recordingItemViewControllers lastObject]) view]];
}
return view;
}
Cảm ơn .. làm việc tốt. – Sudhakar
bạn tiết kiệm người đàn ông ngày của tôi :) Cảm ơn! – Irfan
Nhưng thao tác cuộn băng chuyền này ở chỉ mục thứ 2 không hiển thị mục đầu tiên từ cực bên trái? –