我目前正在研究一個iPhone應用程序,它使用UITableView內的UIScrollView做了一些奇怪的事情。這是我第一次進入iPhone開發,所以我確信這是我失蹤的愚蠢。iPhone - Objective C - UITableView裏面的UIScrollView呈現有趣
在每個UITableViewCell中,我都放入一個基本的UITableViewCell。在那個UITableViewCell是一個標籤和一個UIScrollView。
標籤和滾動視圖設置並正常工作,但是當它第一次顯示時,它在y軸上向下偏移約30個像素,或者由XIB/NIB定位。我沒有手動移動它。標籤顯示在正確的位置。在0,0。 UIScrollView應該顯示在0,22,但顯示接近0,40。
當我滑動滾動包含UITableView,那麼所有的UIScrollViews將出現在正確的位置假設當UITableView滾動UITableViewCell離開屏幕。
下面是UITableView.cellForRowAtIndexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"GalleryRowCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
[cell.layer setMasksToBounds:TRUE];
[cell.layer setCornerRadius:10.0];
Contagion *c = (Contagion *)[self.dataSet objectAtIndex:indexPath.row];
GalleryRowViewController *subView = [[GalleryRowViewController alloc] initWithContagion:c];
[cell.contentView addSubview:subView.view];
subView.contagionName.text = c.name;
subView.contagion = c;
return cell;
}
這裏的代碼爲我GalleryRowViewController.viewDidLoad
- (void)viewDidLoad {
[super viewDidLoad];
self.imageScroll.delegate = self;
[self.imageScroll setBackgroundColor:[UIColor blackColor]];
[self.imageScroll setCanCancelContentTouches:NO];
self.imageScroll.indicatorStyle = UIScrollViewIndicatorStyleWhite;
self.imageScroll.clipsToBounds = NO;
self.imageScroll.scrollEnabled = YES;
self.imageScroll.pagingEnabled = NO;
NSInteger x = 0;
CGFloat xPos = 0;
for (x=0;x<=10;x++) {
UIImage *image = [UIImage imageNamed:@"57-icon.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[imageView setBackgroundColor:[UIColor yellowColor]];
CGRect rect = imageView.frame;
rect.size.height = 70;
rect.size.width = image.size.width;
rect.origin.x = xPos;
rect.origin.y = 5;
imageView.frame = rect;
[self.imageScroll addSubview:imageView];
xPos += imageView.frame.size.width+5;
}
[self.imageScroll setContentSize:CGSizeMake(xPos, [self.imageScroll bounds].size.height)];
}
---編輯影像---
代碼後應用程序載入:http://img809.imageshack.us/img809/4576/screenshot20110927at427.png
Scrollin後g屏幕和背面的行:http://img690.imageshack.us/img690/9461/screenshot20110927at428.png
感謝您的回覆。你提出的幾乎是我最終解決這個問題的方法。它肯定與細胞再利用有關。 – erspies
很高興我能幫到你 – mackworth