2016-05-28 12 views
0

は私が値名前を持つテーブルビューを作成移入のUITableView

[{"id": 1,"Name": "Nodia","company": "WWW","position": "HR","email": "[email protected]","number": "33","photo": "image1.png"}, {"id": 2,"Name": "Nona ","company": "SSS","position": "Head of Department","email": "[email protected]","number": "5496","photo": "image2.png"}, {"id": 3,"Name": "David","company": "DDD","position": "Director","email": "[email protected]","number": "574","photo": "image3.png"},....]| 

JSONデータを持っています。

Tableviewcontroller.h : 
    @interface CitiesViewController() 
     @property(nonatomic,strong)NSMutableArray *jsonArray 
     @property(nonatomic,strong)NSMutableArray *citiesArray; 
-(void)retrieveData; 

Tableviewcontroller.m : 
    @implementation CitiesViewController 
     @synthesize 

citiesArray,jsonArray; 

    #pragma mark - 

    #pragma mark Class Methods 

    -(void)retrieveData 
    { 

     NSURL *url = [NSURL URLWithString:getDataURL]; 
     NSData *data = [NSData dataWithContentsOfURL:url]; 

     jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 

     citiesArray =[[NSMutableArray alloc]init]; 

     for (int i= 0; i<jsonArray.count; i++) 
     { 
      NSString *cID = [[jsonArray objectAtIndex:i] objectForKey:@"id"]; 
      NSString *cName = [[jsonArray objectAtIndex:i] objectForKey:@"Name"]; 
      NSString *cCompany = [[jsonArray objectAtIndex:i] objectForKey:@"company"]; 
      NSString *cPosition = [[jsonArray objectAtIndex:i] objectForKey:@"position"]; 
      NSString *cEmail = [[jsonArray objectAtIndex:i] objectForKey:@"email"]; 

      NSString *cNumber = [[jsonArray objectAtIndex:i] objectForKey:@"number"]; 
      NSString *cPhoto = [[jsonArray objectAtIndex:i] objectForKey:@"photo"]; 

      NSURL *urlOne = [NSURL URLWithString:cPhoto]; 
     //  NSLog(@"%@",urlOne); 
      NSData *photoData = [NSData dataWithContentsOfURL:urlOne]; 
      UIImage *imageOne = [[UIImage alloc] initWithData:photoData]; 

      [citiesArray addObject:[[City alloc]initWithCityName:cName andCityState:cCompany andCityCountry:cEmail andCityPopulation:cPosition andCityID:cID andCityNumber:cNumber andCityPhoto: (UIImage *) imageOne]]; 

     } 

     [self.tableView reloadData]; 

    } 

    - (void)viewDidLoad { 
     [super viewDidLoad]; 

     [self retrieveData]; 

    } 

    #pragma mark - Table view data source 

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
      return 1; 
     } 

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
      return citiesArray.count; 

    } 

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


     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 

     // Configure the cell... 


     City *cityob; 
     cityob=[citiesArray objectAtIndex:indexPath.row]; 
     cell.textLabel.text=cityob.employeeName; 


     return cell; 

    } 

すべてがfine.Cellはデータを示して動作します。しかし、問題は、TableViewのセクションおよびセクションインデックスタイトルのタイトルヘッダーを設定できないことです。セクションのアルファベット順のヘッダーが必要です。 データは動的な静的な解決策であるため問題には適していません。 like in this tutriole

ありがとうございます。私の悪い英語!

+0

これはSwiftのコードですが、 'func tableView(tableView:UITableView、titleForHeaderInSection section:Int) - > String? {} 'はUITableViewDelegateの拡張です。参考までに[this](http://stackoverflow.com/a/15740781/3921490)をご覧ください。 – amagain

+0

@amagain詳細はできる限り? –

+0

@amagain - (NSStringの*)のtableView:(のUITableView *)のtableView titleForHeaderInSection:(NSInteger)セクション{ }が、私はあなたがこのようなものを使用しているため、アルファベット順 –

答えて

0

すでに述べたように、tableView:titleForHeaderInSection:を実装する必要があります。現在、唯一つのセクションを持っている、あなたが見せたいものを不明であるが、実装例は次のようになります:

- (NSString *)tableView:(UITableView *)aTableView titleForHeaderInSection:(NSInteger)section { 

NSString *sectionNameString = @"Current Jobs"; 
return sectionNameString;} 

私のiPhone上でこれを入力するが、これは、それがどのように見えるかを約あります。文字列は、そのようなあなたのクラスの範囲外の機能を比較する使用します。

NSInteger sortCitiesByName(City *city1, City *city2, void *context) { 
NSString *name1 = [city1 name]; 
NSString *name2 = [city2 name]; 
return [name1 localizedCaseInsensitiveCompare: name2];} 

をして、並べ替え、このようなあなたの配列の何かが:

citiesArray = [citiesArray sortedArrayUsingFunction:sortCitiesByName context:nil]; 
+0

を実装する方法がわかりませんあなたのcitiesArray: - (NSArray *)sortedArrayUsingSelector:(SEL)コンパレータ; または - (NSArray *)sortedArrayUsingFunction:(NSInteger(*)(ObjectType、ObjectType、void * __nullable)) –

+0

で配列をソートしたい – caxix

+0

それは私に与えるだろうか? –

0
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
    { 
     return [citiesArray objectAtIndex:section]; 
    } 

これをチェックしてくださいと、適切な修正を行います。

+0

アルファベットのための個々の配列を作成することがありますか? –