iOS目标C:如何在给定条件后增加行数

时间:2016-09-29 07:08:04

标签: ios objective-c uitableview

我是iOS的新手,住在一个非常小的村庄,在iOS上没有任何帮助,我在代码中需要帮助,一旦到达第20行,我就可以增加行数。

我实际上有超过6000行,当试图在tableview中显示它们时,它需要很多时间,所以我想以有效的方式加载所有行,比如像+20,+ 50等增加它

这是我的代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return a;
}

我试图像这样增加行:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    if(indexPath.row == 20)
    {
        [_myTable reloadData];
        [self.myTable beginUpdates];

        a= a +50;
        [self.myTable endUpdates];
    }

    if (indexPath.row > 60)
    {
        [self.myTable beginUpdates];
        a= a +100;
        [self.myTable endUpdates];
    }
}

我将myTable声明为属性

我很抱歉,如果我的帖子看起来很愚蠢,我处于非常基本的位置,抱歉我的英语不好。

2 个答案:

答案 0 :(得分:2)

tableView中显示的行数取决于可用数据,即要在UITableView中显示的数据。

让阵列"国家"包含3个国家的名单:

NSArray *countries;

countries  = @[@"India",@"USA",@"Germany",nil]; 

所以,现在UITableView有3行,所以请使用:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return countries.count;
}

因此,如果国家/地区列表稍后增加,那么它将起作用。

无需手动增加表格中的行数。

如果响应来自服务器,请使用:

NSArray *dataArray = [responseObject objectForKey:@"countriesJson"];

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return dataArray.count;
}

示例项目:

请查看下面的GitHub链接:

https://github.com/k-sathireddy/TableRowCountDynamic

注意:如果达到某个限制,则会加载更多图像。

答案 1 :(得分:-1)

您必须遵循以下算法或逻辑,

1)首先使用20个对象初始化数组,该数组将用于UITableViewdatasource的显示。

2)然后你需要实现UIScrollView delegate方法- (void)scrollViewDidScroll:(UIScrollView *)aScrollView,你可以在其中编写一些代码:

- (Void) scrollViewDidScroll: (UIScrollView *) aScrollView
{
    self.tbleSerachResult.frame=self.tbleSerachResult.frame;

    if (aScrollView==self.tblOutlet) {
        [currentTextfield resignFirstResponder];

        CGPoint offset = aScrollView.contentOffset;
        CGRect bounds = aScrollView.bounds;
        CGSize size = aScrollView.contentSize;
        UIEdgeInsets inset = aScrollView.contentInset;
        float y = offset.y + bounds.size.height - inset.bottom;
        float h = size.height;
        float reload_distance = 10;
        if(y > h + reload_distance)
        {   
            //add more 20 records to your existing array which used for the UITableView data source and reload the UITableView.
            //Put your load more data method here...

        }
    }
 }

3)在此之后,你不需要任何其他东西来维持这一点。只需正常实施UITableView delegatedatasource方法即可。它会起作用。

尝试这种方式,如果仍然面临任何问题,请告诉我,我会给你示例代码。

希望它对你有用!!快乐的编码:)