IOS開發之微信山寨版


  為了犒勞自己的學習內容,就山寨個微信的視圖控制吧。拿着微信,仔細的看了一下,主要用到了TabBarController以及配置TabBarItem, NavigationController以及配置NavigationBarItem, 還用到了我們比較復雜的TableViewController來顯示我們的數據。在用到TableView中既有靜態的TableView,也有動態的TableView。動態的TableView主要用來顯示我們的數據,而靜態的TableView主要用來顯示功能模塊導航時使用。在用到靜態TableView時我們還用到啦分組的和未分組的cell。

  1.下面是我們主要的視圖框架,需要時我們會給對應的Controller關聯相應的代碼,實現我們的業務邏輯。視圖框架如下:

  2.Project最終運行的界面如下,下面帶箭頭的Cell點進去是一個ViewController,下面的圖片都是在網上找得素材,第一個頁面里面是放的動態的TableView,里面的數據是模擬網絡請求過來的動態數據:

 

  3.不能只貼圖片對吧,寫程序是少不了代碼的,從第一個頁面入手,如何動態加載我們的TableView. 在進行編碼之前,首先得配置我們的cell模板,在我們動態TableView中用到幾種Cell,我們就配置幾種cell模板,在配置cell模板時要設置每個cell的identifier,便於在代碼中根據不同的數據來選擇我們數據對應的cell。我們的TableView的控制類要繼承於我們的UITableViewController類。下面是往我們動態TableView中的cell添加數據

    (1)在我們相應的TableViewController類中創建我們的測試數據,來模擬網絡請求。創建一個可變數組,往可變數組中存入100個字典,字典里模擬用戶信息。

 1     //初始化數據
 2     
 3     self.myData = [[NSMutableArray alloc] initWithCapacity:100];
 4     
 5     //往數組里添加字典
 6     for (int i = 0; i < 100; i ++) {
 7         //創建用戶
 8         NSString *name = [NSString stringWithFormat:@"User%03d", i];
 9         NSString *number = [NSString stringWithFormat:@"12345%03d", i];
10         
11         //創建字典
12         NSDictionary *user = @{@"name":name,
13                                @"number":number};
14         
15         //字典加入數組
16         [self.myData addObject:user];
17     }

    

   (2)返回我們sectionNumber,在這我們就寫一個分組吧,真正的數據是計算出來的

1 //在動態TableView中的分組數,有幾組返回幾
2 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
3 {
4     // Return the number of sections.
5     return 1;
6 }

  

    (3)返回每個分組的行數,這里我們返回的時我們創建數組元素的個數

1 //每個分組中的行數,即為數組元素的個數
2 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
3 {
4     // Return the number of rows in the section.
5     return self.myData.count;
6 }

 

  (4)給我們的cell賦數據,通過Cell的identifier來創建cell,獲取第幾條數據是通過回調參數indexPath的item來確定獲取第幾條數據

 1 //創建cell
 2 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 3 {
 4     NSLog(@"獲取的第%03d個數據", indexPath.item);//請求測試
 5     
 6     //通過我們的cell的類型創建相應的cell
 7     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"number" forIndexPath:indexPath];
 8     
 9     // Configure the cell...
10     cell.textLabel.text = self.myData[indexPath.item][@"name"];
11     cell.detailTextLabel.text = self.myData[indexPath.item][@"number"];
12     return cell;
13 }

  

  代碼說明:

    動態的TableView就是為我們的大數據准備的,默認的事屏幕上顯示多少,就會請求多少數據。隨着屏幕的下拉,會請求要顯示的數據,上出屏幕的數據會被釋放掉。若想請求更多,我們需要用代碼實現,在以后的博客中會介紹,在這不做過多的介紹。動態請求數據如下:

  靜態的TableView實現起來比較簡單,配置起來也比較簡單,在這不做贅述。上面的東西只是防微信的視圖框架,沒有給出具體的業務邏輯。要實現具體的業務邏輯,我們需要給每個ViewController關聯實體類,然后在每個類中實現我們對應的業務邏輯,這樣分析起來,微信的代碼量還是蠻大的。在以后的博客中會給出具體的業務邏輯實現,本篇博客先做一個引子吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM