UITableView的中的UIView中的UIScrollView中:在UITableView的数

2019-09-27 09:56发布

为了工作,我需要创建中嵌入一个UIView这反过来他通过嵌入在Xcode容器功能的UITableView的一个UIScrollView。

我的UIScrollView是一个完整的页面滚动视图分页功能。 我UIView充满了一个UIImage,一些的UIButton的和链接到一个UITableView的容器。

在初始发射,该数据被完全加载,这意味着UITableView的填充有数据,则UIImage的被填充,并且按钮正确放置。

但是,对于一些奇怪的原因,当我试图挖掘或容器从我的UITableView中的所有数据在UITableView的滚动被清除。

我在这里张贴了这个问题,因为我还没有发现在计算器上或任何其他网站的任何其他类似的问题。

UITableViewCode:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.productTable setBackgroundView:nil];
    self.productTable.backgroundColor = [UIColor clearColor];
    self.productTable.delegate = self;
    self.productTable.dataSource = self;
}

- (void) viewDidAppear:(BOOL)animated {
    /*CGSize tmp = self.productTable.contentSize;
    self.productTable.frame = CGRectMake(0, 0, tmp.width, tmp.height * 3);*/


}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    // Return the number of sections.
    NSLog(@"section count : %i", [self.Products count]);
    return [self.Products count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    xcsSectionInfo *sectionInfo = [self.Products objectAtIndex:section];
    if (sectionInfo.isOpen == NO) {
        return 1;
    } else {
        return 3;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    xcsSectionInfo *sectionInfo = [self.Products objectAtIndex:indexPath.section];

    if (indexPath.row == 0)  {
        static NSString *CellIdentifier = @"Header";
        xcsProductHeaderCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
        cell.articleNumber.text = sectionInfo.product.articleNumber;
        cell.articleColor.text = sectionInfo.product.articleColor;
        cell.backgroundColor = [UIColor grayColor];
        if (sectionInfo.isOpen == YES && sectionInfo == self.currentSectionInfo) {
            cell.expandImage.image = [UIImage imageNamed:@"arrow_down.png"];
        } else if (sectionInfo.isOpen == NO) {
            cell.expandImage.image = [UIImage imageNamed:@"arrow_up.png"];
        }
        return cell;
    } else if (indexPath.row == 1) {
         static NSString *CellIdentifier = @"ProductHeader";
        xcsProductTitleCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
        cell.colorTempHeader.text = @"Color Temperature";
        cell.sourceQualityHeader.text = @"Source Quality";
        cell.sourceTypeHeader.text = @"Source Type";
        cell.luminaireFluxHeader.text = @"Luminaire Flux";
        cell.powerConsumptionHeader.text = @"Power Consumption";
        cell.luminaireEfficacyHeader.text = @"Luminaire Efficacy";
        cell.backgroundColor = [UIColor grayColor];
        return cell;
    } else if (indexPath.row == 2) {

        static NSString *CellIdentifier = @"Product";
        xcsProductCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
        cell.colorTemp.text = sectionInfo.product.colorTemperature;
        cell.sourceQuality.text = sectionInfo.product.sourceQuality;
        cell.sourceType.text = sectionInfo.product.sourceType;
        cell.luminaireFlux.text = sectionInfo.product.luminaireFlux;
        cell.powerConsumption.text = sectionInfo.product.powerConsumption;
        cell.luminaireEfficacy.text = sectionInfo.product.luminaireEfficacy;
        cell.backgroundColor = [UIColor grayColor];
        return cell;
    }
}

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
        xcsSectionInfo *sectionInfo = [self.Products objectAtIndex:indexPath.section];
    NSIndexPath *path0 = [NSIndexPath indexPathForRow:[indexPath row]+1 inSection:[indexPath section]];
    NSIndexPath *path1 = [NSIndexPath indexPathForRow:[indexPath row]+2 inSection:[indexPath section]];
            NSArray *indexPathArray = [NSArray arrayWithObjects: path0, path1, nil];
    if (sectionInfo.isOpen == NO) {
        sectionInfo.isOpen = YES;
        [tableView insertRowsAtIndexPaths:indexPathArray withRowAnimation:NO];
    } else {
        sectionInfo.isOpen = NO;
        [tableView deleteRowsAtIndexPaths:indexPathArray withRowAnimation:NO];
    }
    [self.Products replaceObjectAtIndex:indexPath.section withObject:sectionInfo];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    self.currentSectionInfo = sectionInfo;
    [tableView reloadData];
}

顺便说一句:我使用的是故事板

问候和感谢提前。

Answer 1:

更新2:

我认为UIPageViewController会更合适( 链接 )。 它看起来像它实现你要实现的目标是什么。 而且很可能远远超过管理嵌入到其他的滚动视图滚动视图更加简单。


更新

它看起来像你正在努力实现的是可能什么UIPageViewController ( 链接 )。 如果一切正常,它会比试图管理嵌入到其他视图滚动视图更好。


嵌入一个UITableView是专门Apple不推荐使用。 当系统试图找出何处发送事件发生冲突:

重要提示 :你不应该嵌入的UIScrollView对象的UIWebView或UITableView的对象。 如果这样做,可能会导致意外的行为,因为这两个物体的触摸事件可以混合起来,并错误地处理。 ( 源 )

但这里是愚蠢的一部分,当你去到源链接,你会发现,出现在文档的UIWebView苹果忘了,包括它在文档中进行 UITableView



文章来源: UITableView in UIView in UIScrollview : On tap in UITableView data gets cleared