从json加载数据后在表视图上创建标签

时间:2014-10-29 11:06:22

标签: ios uitableview

我正在我的应用中制作收件箱模块。我想问一下,我想在从Json传入数据后在UITableView中创建一个programaticaly标签。通过它我们点击并获得更多数据?怎么做?例如在facebook中,我们点击消息,然后向下移动我们点击加载更多消息???加载更多消息标签我发送另一个呼叫以加载更多消息。

2 个答案:

答案 0 :(得分:1)

好的,所以你必须一起破解这一切。这是在您的uitableview上获取"加载更多数据" cell的常用方法

需要的方法

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
   return dataRows+1;
}



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

    //after setting tableviewcell

    if(indexPath.row==dataRows){

    cell.textLabel.text=@"Load More Rows";
    }
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

   if(indexPath.row==dataRows){
      //there you can write code to get next rows
   }
}

好的,这是黑客必须开始的地方。看看这个CODE

似乎最重要的方法是

- (void)reloadTableView:(int)startingRow

答案 1 :(得分:0)

为此您可以设置为按钮。如果您在tableview中单击该按钮,您可以获得更多数据,否则您可以逐步获取数据,如十分之十的数据。

创建自定义单元格并在自定义单元格中设置按钮也将名称命名为btnLoadMore

在头文件

@interface myViewController : UIViewController {
    int loadMoreTableInt;
    int paginationInt; 
}

在.m文件中

 - (void)viewDidLoad {
      [super viewDidLoad];
      loadMoreTableInt = 0;
      paginationInt = 1;    
 }


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

      customCell *cell=(customCell*)[tableView dequeueReusableCellWithIdentifier:@"Reuse"];

      NSArray *nib=[[NSBundle mainBundle] loadNibNamed:@"customCell" owner:self options:nil];

      if(cell == nil) {

         cell=[nib objectAtIndex:0];

      }

     if(loadMoreTableInt-1> indexPath.row) {

        cell.labelName.text = [NSString stringWithFormat:@"%@",[modelRoot.arrayName objectAtIndex:indexPath.row]];


     } else {

        if(cell == nil) {
           cell=[nib objectAtIndex:1];
        }

        [cell.btnLoadMore setTitle:[NSString stringWithFormat:@"Load More "] forState:UIControlStateNormal];

        cell.btnLoadMore.tag=indexPath.row;

        cell.accessoryType=UITableViewCellAccessoryNone;

        [cell.btnSeeMorebtnLoadMore addTarget:self action:@selector(loadmoreButtonAction:) forControlEvents:UIControlEventTouchUpInside];
                    cell.selectionStyle=UITableViewCellSelectionStyleNone;

  }   

在loadmoreButtonAction中给出像这样的代码

 -(void)loadmoreButtonAction:(id)sender {

     @try {
         UIButton *btn=(id)sender;

         paginationInt=paginationInt+1;
         [tableview reloadData];

         CGPoint point;
         point.x=40;
         point.y=btn.tag*53;

         NSIndexPath *path = [tableview indexPathForRowAtPoint:point];
         [tableview scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionTop animated:NO];

        }@catch (NSException *exception) {

      }
 }