Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

          We often need to add social features in our iPhone apps. Adding features like commenting, shouts etc are very common. These type of data are usually shown
          with pagination with buttons like next, previous etc.

          To reduce the overhead of creating this functionality again and again we may encapsulate the common functions in a class. So did I for my applications.

          I have created a class named PaginationAgent. After loading records it calls related methods of its delegate which should implement protocol PaginationAgentDeleagte.

          Additionally two php files are needed. One to return the total number of records and another one is to fetch the page data. They must be named respectively as

          • get_total_number_of_records.php
          • get_records.php

          Lets see an example.

          First, I have created a simple view based project “Pagination” and designed the view as u see:

          Create a similar view using Interface Builder

          1. Added a button to show previous page data

          2. One button to reload the data.

          3. Another to show data on next page.

          4. Added a UITable which will show the result.

          In PaginationViewController.h, imported PaginationAgent.h file and declared:

          1. PaginationAgent* objPagination;  

          Now lets see how to initialize it. In the viewDidLoad method I initialized this like this:

          1. objPagination = [[PaginationAgent alloc] init];  
          2. objPagination.delegate = self;  
          3. objPagination.remoteApiBasePath = @"http://your.server/path/to/folder";  

          remoteApiBasePath must be set to the location where the server side php files are placed.
          No trailing slash.

          PaginationAgentDelegate protocol declares the following functions to be overridden by the Delegate:

          1. /** 
          2. * This method is called when the busystate is changed. 
          3. * You can do something like disable/enable the buttons, grayout etc 
          4. * based on the isBusy value. 
          5. */  
          6. -(void)paginationAgent:(PaginationAgent*)agent updateBusyMode:(BOOL)isBusy;  
          7.   
          8. /** 
          9. * Called when total data count is received if shouldReloadAtFirstPage is set NO. 
          10. */  
          11. -(void)paginationAgent:(PaginationAgent*)agent totalDataCountReceived:(int)dataCount;  
          12.   
          13. /** 
          14. * Called when page data is loaded. You may set your table dataSource here and realod 
          15. * reload the table. 
          16. */  
          17. -(void)paginationAgent:(PaginationAgent*)agent pageDataReceived:(NSArray*)data;  
          18.   
          19. /** 
          20. * Called if server sends malformed data 
          21. */  
          22. -(void)paginationAgent:(PaginationAgent*)agent onPaginationServerError:(NSString*)message;  
          23.   
          24. /** 
          25. * Called if connection failed. It may occur due to poor or no internet connectivity 
          26. */  
          27. -(void)paginationAgent:(PaginationAgent*)agent onPaginationConnectionError:(NSString*)message;  

          The php files must return data in json format and must use the format as used:

          1. 1,'message'=>'Success','data'=>33);  
          2.     echo json_encode($data);  
          3.   
          4. ?>  
          1. ...  
          2. ...  
          3. $data = array('success'=>1,'message'=>'Got data','data'=>$rows);  
          4.   
          5. echo json_encode($data);  

          See the attached project for details. The php files are inside the folder “PHPFILES”.

          Pagination.zip

          posted on 2010-10-08 21:30 seal 閱讀(267) 評論(0)  編輯  收藏 所屬分類: iPhone
          主站蜘蛛池模板: 漳平市| 瑞安市| 新竹县| 沁水县| 北流市| 抚宁县| 博湖县| 山东省| 邵阳县| 望谟县| 许昌县| 雷山县| 四子王旗| 高密市| 华阴市| 屏东市| 正镶白旗| 太仆寺旗| 瓦房店市| 伊宁市| 洛扎县| 曲水县| 南充市| 杨浦区| 伊宁县| 南雄市| 漳州市| 乌拉特中旗| 武城县| 河间市| 武威市| 新密市| 南部县| 巍山| 南康市| 南丹县| 宜川县| 宾川县| 岢岚县| 尤溪县| 乌苏市|