I want to like this, Please have a look
我有UITableViewCell,我创建了类别明智的JSON数据。我获取了所有的价值,但是如何在特定数组中安排类别,比如在两个不同的数组下的“business_details”一侧的第一类“汽车”。我想在UITableViewCell中安排类别。怎么可能,请帮忙。谢谢
{
"status": [
{
"business_category_name": "Automotive",
"business_details": [
{
"img_url": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/member-logo\/1467813900-263.jpg",
"name": "ssmpl",
"des": "SIXTH SENSE MARKETING PVT LTD",
"address": "m2",
"email": "hr@sixthsenseit.com",
"phone": "09999999999",
"member_since": "2016-07-06",
"img_company": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/member-logo\/1467813900-263.jpg",
"website": "www.sixthsenseit.com",
"city": "indore",
"state": "mp",
"zip": "452001"
},
{
"img_url": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/member-logo\/1467814186-DSC_5854.jpg11.jpg",
"name": "h",
"des": "",
"address": "gkjg",
"email": "jgjg",
"phone": "gjg",
"member_since": "2016-07-06",
"img_company": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/member-logo\/1467814186-DSC_5854.jpg11.jpg",
"website": "jg",
"city": "jg",
"state": "gjg",
"zip": "jgj"
}
]
},
{
"business_category_name": "Banks\/Credit Unions\/Landers",
"business_details": [
{
"img_url": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/member-logo\/1464667619-pnc.jpg",
"name": "PNC Bank",
"des": "PNC offers a wide range of services for all our customers, from individuals and small businesses, to corporations and government entities",
"address": "",
"email": "andrea.kendall@pnc.com",
"phone": "260-422-5922",
"member_since": "2016-05-31",
"img_company": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/member-logo\/1464667619-pnc.jpg",
"website": "",
"city": "Fort Wayne",
"state": "IN",
"zip": "46808"
}
]
}
]
}
- (void)viewDidLoad
{
[super viewDidLoad];
names = [NSMutableArray new];
ntm= [NSMutableArray new];
adrsary=[NSMutableArray new];
phoneary=[NSMutableArray new];
emailary=[NSMutableArray new];
websiteary=[NSMutableArray new];
sensary=[NSMutableArray new];
desary=[NSMutableArray new];
image=[NSMutableArray new];
[self.tabel_view setAllowsMultipleSelection:YES];
NSURLRequest *req=[[NSURLRequest alloc]initWithURL:[NSURL URLWithString:@"http://edutimeapp.com/toshow/chamber-of-commerc/ws/fetch_member.php"]];
response =[[NSMutableData alloc]init];
[NSURLConnection connectionWithRequest:req delegate:self];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSError *error;
NSLog(@"Error in receiving data %@",error);
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];
NSLog(@"response data %@",json);
NSArray *statuses = [json objectForKey:@"status"];
for(NSDictionary *status in statuses){
NSString *bussiness_category=[status valueForKey:@"business_category_name"];
[names addObject:bussiness_category];
NSLog(@"busness details %@",names);
for(NSDictionary *details in [status objectForKey:@"business_details"])
{
NSString *name=[details valueForKey:@"name"];
[ntm addObject:name];
NSLog(@"name %@",ntm);
NSString *address=[details valueForKey:@"address"];
[adrsary addObject:address];
NSLog(@"address %@",adrsary);
NSString *phone=[details valueForKey:@"phone"];
[phoneary addObject:phone];
NSLog(@"phone %@",phoneary);
NSString *email=[details valueForKey:@"email"];
[emailary addObject:email];
NSLog(@"email %@",emailary);
NSString *website=[details valueForKey:@"website"];
[websiteary addObject:website];
NSLog(@"website %@",websiteary);
NSString *memsens=[details valueForKey:@"member_since"];
[sensary addObject:memsens];
NSLog(@"mem. sense %@",sensary);
NSString *des=[details valueForKey:@"des"];
[desary addObject:des];
NSLog(@"desc. %@",desary);
NSString *img=[details valueForKey:@"img_url"];
[image addObject:img];
NSLog(@"image. %@",image);
}
}
for (int i=0; i<[names count]; i++) {
[arrayForBool addObject:[NSNumber numberWithBool:NO]];
}
[self.tabel_view reloadData];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return names.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if ([[arrayForBool objectAtIndex:section] boolValue]) {
return emailary.count;
}
else
return 0;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 70;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *sectionHeaderView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, tableView.frame.size.width,70)];
sectionHeaderView.backgroundColor=[UIColor grayColor];
sectionHeaderView.tag=section;
UIView *sectionsubHeaderView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, tableView.frame.size.width,60)];
sectionsubHeaderView.backgroundColor=[UIColor blueColor];
UIImageView *arrow=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0,60, 60)];
[arrow setImage:[UIImage imageNamed:@"arrow"]];
UILabel *Lbl=[[UILabel alloc]initWithFrame:CGRectMake(60, 0,tableView.frame.size.width-60, 60)];
Lbl.text=[names objectAtIndex:section];
Lbl.textColor=[UIColor whiteColor];
[sectionsubHeaderView addSubview:arrow];
[sectionsubHeaderView addSubview:Lbl];
[sectionHeaderView addSubview:sectionsubHeaderView];
UITapGestureRecognizer *headerTapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sectionHeaderTapped:)];
[sectionHeaderView addGestureRecognizer:headerTapped];
return sectionHeaderView;
}
- (void)sectionHeaderTapped:(UITapGestureRecognizer *)gestureRecognizer
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:gestureRecognizer.view.tag];
if (indexPath.row == 0) {
BOOL collapsed = [[arrayForBool objectAtIndex:indexPath.section] boolValue];
for (int i=0; i<[names count]; i++) {
if (indexPath.section==i) {
[arrayForBool replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:!collapsed]];
}
}
[self.tabel_view reloadSections:[NSIndexSet indexSetWithIndex:gestureRecognizer.view.tag] withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MemberTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ht"];
if (cell==nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"Cell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
cell.title.text=[NSString stringWithFormat:@"%@",[ntm objectAtIndex:indexPath.row]];
cell.email.text=[NSString stringWithFormat:@"%@",[emailary objectAtIndex:indexPath.row]];
cell.address_lbl.text=[NSString stringWithFormat:@"%@",[adrsary objectAtIndex:indexPath.row]];
cell.phone_lbl.text=[NSString stringWithFormat:@"%@",[phoneary objectAtIndex:indexPath.row]];
cell.web_lbl.text=[NSString stringWithFormat:@"%@",[websiteary objectAtIndex:indexPath.row]];
cell.sens_lbl.text=[NSString stringWithFormat:@"%@",[sensary objectAtIndex:indexPath.row]];
cell.des_lbl.text=[NSString stringWithFormat:@"%@",[desary objectAtIndex:indexPath.row]];
NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: [image objectAtIndex:indexPath.row]]];
UIImage* image = [[UIImage alloc] initWithData:imageData];
cell.image_view.image =image;
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[arrayForBool replaceObjectAtIndex:indexPath.section withObject:[NSNumber numberWithBool:NO]];
[self.tabel_view reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationAutomatic];
}
答案 0 :(得分:1)
试试这个 -
使用其他数组获取全局数组NSMutableArray *arrayForBool;
。在viewDidLoad()
中分配此数组,即arrayForBool=[[NSMutableArray alloc]init];
现在在connectionDidFinishLoading
之前添加这些代码行
[tableview reloadData]
-
for (int i=0; i<[names count]; i++) {
[arrayForBool addObject:[NSNumber numberWithBool:NO]];
}
这是完整的代码 -
#import "ViewController.h"
#import "MemberTableViewCell.h"
#import "secondVC.h"
@interface ViewController ()
{
NSMutableData *response;
NSMutableArray *arrayForBool;
NSMutableArray *business_details_array;
NSMutableArray *names;
NSDictionary *passDict;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
names = [NSMutableArray new];
arrayForBool=[[NSMutableArray alloc]init];
[self.tableView setAllowsMultipleSelection:YES];
NSURLRequest *req=[[NSURLRequest alloc]initWithURL:[NSURL URLWithString:@"http://edutimeapp.com/toshow/chamber-of-commerc/ws/fetch_member.php"]];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:req delegate:self];
if( connection )
{
response = [NSMutableData new];
}
}
-(void) connection:(NSURLConnection *) connection didReceiveResponse:(NSURLResponse *)response1
{
[response setLength:0];
}
-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[response appendData:data];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSError *error;
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];
NSArray *statuses = [json objectForKey:@"status"];
names=[[NSMutableArray alloc]initWithArray:[statuses valueForKey:@"business_category_name"]];
business_details_array=[[NSMutableArray alloc]initWithArray:[statuses valueForKey:@"business_details"]];
for (int i=0; i<[names count]; i++) {
[arrayForBool addObject:[NSNumber numberWithBool:NO]];
}
[self.tableView reloadData];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return names.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if ([[arrayForBool objectAtIndex:section] boolValue]) {
return [[business_details_array objectAtIndex:section] count];
}
else
return 0;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 70;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *sectionHeaderView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, tableView.frame.size.width,70)];
sectionHeaderView.backgroundColor=[UIColor grayColor];
sectionHeaderView.tag=section;
UIView *sectionsubHeaderView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, tableView.frame.size.width,60)];
sectionsubHeaderView.backgroundColor=[UIColor blueColor];
UIImageView *arrow=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0,60, 60)];
[arrow setImage:[UIImage imageNamed:@"arrow.png"]];
UILabel *Lbl=[[UILabel alloc]initWithFrame:CGRectMake(60, 0,tableView.frame.size.width-60, 60)];
Lbl.text=[names objectAtIndex:section];
Lbl.textColor=[UIColor whiteColor];
[sectionsubHeaderView addSubview:arrow];
[sectionsubHeaderView addSubview:Lbl];
[sectionHeaderView addSubview:sectionsubHeaderView];
UITapGestureRecognizer *headerTapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sectionHeaderTapped:)];
[sectionHeaderView addGestureRecognizer:headerTapped];
return sectionHeaderView;
}
- (void)sectionHeaderTapped:(UITapGestureRecognizer *)gestureRecognizer
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:gestureRecognizer.view.tag];
if (indexPath.row == 0) {
BOOL collapsed = [[arrayForBool objectAtIndex:indexPath.section] boolValue];
for (int i=0; i<[names count]; i++) {
if (indexPath.section==i) {
[arrayForBool replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:!collapsed]];
}
}
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:gestureRecognizer.view.tag] withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MemberTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ht"];
if (cell==nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"Cell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
cell.title.text=[NSString stringWithFormat:@"%@",[[[business_details_array objectAtIndex:indexPath.section] valueForKey:@"name"] objectAtIndex:indexPath.row]];
cell.email.text=[NSString stringWithFormat:@"%@",[[[business_details_array objectAtIndex:indexPath.section] valueForKey:@"email"] objectAtIndex:indexPath.row]];
cell.address_lbl.text=[NSString stringWithFormat:@"%@",[[[business_details_array objectAtIndex:indexPath.section] valueForKey:@"address"] objectAtIndex:indexPath.row]];
cell.phone_lbl.text=[NSString stringWithFormat:@"%@",[[[business_details_array objectAtIndex:indexPath.section] valueForKey:@"phone"] objectAtIndex:indexPath.row]];
cell.web_lbl.text=[NSString stringWithFormat:@"%@",[[[business_details_array objectAtIndex:indexPath.section] valueForKey:@"website"] objectAtIndex:indexPath.row]];
cell.sens_lbl.text=[NSString stringWithFormat:@"%@",[[[business_details_array objectAtIndex:indexPath.section] valueForKey:@"member_since"] objectAtIndex:indexPath.row]];
cell.des_lbl.text=[NSString stringWithFormat:@"%@",[[[business_details_array objectAtIndex:indexPath.section] valueForKey:@"des"] objectAtIndex:indexPath.row]];
NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: [NSString stringWithFormat:@"%@",[[[business_details_array objectAtIndex:indexPath.section] valueForKey:@"img_url"] objectAtIndex:indexPath.row]]]];
UIImage* image = [[UIImage alloc] initWithData:imageData];
cell.image_view.image =image;
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[arrayForBool replaceObjectAtIndex:indexPath.section withObject:[NSNumber numberWithBool:NO]];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationAutomatic];
passDict=[[business_details_array objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"gotoSeconVC" sender:self];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"gotoSeconVC"]) {
secondVC *vc=[segue destinationViewController];
vc.myPreviousVCDict=passDict;
}
}
@end
现在在secondVC.h
档案 -
#import <UIKit/UIKit.h>
@interface secondVC : UIViewController
@property(strong,nonatomic)NSDictionary *myPreviousVCDict;
@end
NSLog()
viewDidLoad()
中的这个词典。希望这会帮助你。使用此方法,您可以创建Section和expandable部分的自定义标题。
这是输出屏幕 -
storyBoard必须看起来像这样 -
这是member_details你想要的 -