I’m new to the iphone development, I’m using NSXML to parse and able to display data in tableview, I also need to display image along with the text in the tableview.Prior to submitting this question I have searched over the internet and have found no solutions.,
The following is the code I’m using to parse and display data on table view
NSMutableString *currentNodeContent;
NSXMLParser *parser;
ImageView *currentImage;
bool isStatus;
ViewController *xmlParser;
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 10;
}
-(UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
ImageView *currentImage = [[xmlParser templates]objectAtIndex:indexPath.row];
UITableViewCell *cell = [UITableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
CGRect nameLabelFrame = CGRectMake(55, 2, 250, 20);
UILabel *namelabelF = [[UILabel alloc] initWithFrame:nameLabelFrame];
namelabelF.tag = 0011;
namelabelF.font = [UIFont boldSystemFontOfSize:12];
namelabelF.text = @"Template Name :";
namelabelF.textColor = [UIColor orangeColor];
[cell.contentView addSubview:namelabelF];
CGRect nameFrame = CGRectMake(165, 2, 250, 20);
UILabel *nameLabel = [[UILabel alloc]initWithFrame:nameFrame];
nameLabel.tag = 0012;
nameLabel.font = [UIFont boldSystemFontOfSize:12];
[cell.contentView addSubview:nameLabel];
CGRect imageFrame = CGRectMake(105, 20, 250, 13);
UILabel *imageLabel = [[UILabel alloc]initWithFrame:imageFrame];
imageLabel.tag = 0014;
imageLabel.font = [UIFont systemFontOfSize:12];
[cell.contentView addSubview:imageLabel];
CGRect categoryFrameCreated = CGRectMake(45, 35, 250, 10);
UILabel *categoryFrameCreatedLabel = [[UILabel alloc] initWithFrame:categoryFrameCreated];
categoryFrameCreatedLabel.tag = 0015;
categoryFrameCreatedLabel.font = [UIFont boldSystemFontOfSize:10];
categoryFrameCreatedLabel.text = @"Category ;";
categoryFrameCreatedLabel.textColor = [UIColor grayColor];
[cell.contentView addSubview:categoryFrameCreatedLabel];
CGRect categoryFrame = CGRectMake(105, 35, 250, 10);
UILabel *categoryLabel = [[UILabel alloc] initWithFrame:categoryFrame];
categoryLabel.tag = 0016;
categoryLabel.font = [UIFont systemFontOfSize:10];
[cell.contentView addSubview:categoryLabel];
}
UILabel *templateLabel = (UILabel *)[cell.contentView viewWithTag:0012];
templateLabel.text = [currentImage templateName];
UILabel *imgLabel = (UILabel *)[cell.contentView viewWithTag:0014];
imgLabel.text = [currentImage imgPath];
UILabel *categoryLabel = (UILabel *)[cell.contentView viewWithTag:0016];
categoryLabel.text = [currentImage category];
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 55;
}
#pragma mark -
#pragma mark Table view delegate
-(id) loadXMLByURL:(NSString *)urlString
{
templates = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
return self;
}
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementname isEqualToString:@"template_maste"])
{
currentImage = [ImageView alloc];
isStatus = YES;
}
if ([elementname isEqualToString:@"Template_name"])
{
currentImage = [ImageView alloc];
isStatus = YES;
}
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementname isEqualToString:@"Template_name"])
{
currentImage.templateName = currentNodeContent;
}
if ([elementname isEqualToString:@"img_path"])
{
currentImage.imgPath = currentNodeContent;
}
if ([elementname isEqualToString:@"Category"])
{
currentImage.category = currentNodeContent;
}
if ([elementname isEqualToString:@"template_maste"])
{
[self.templates addObject:currentImage];
currentImage = nil;
currentNodeContent = nil;
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
xmlParser = [[ViewController alloc] loadXMLByURL:@"http://www.okok.net/services/contacts.aspx?type=gettemplates1&category="];
}
*–xml file–***
<template_maste>
<img_id>249</img_id>
<img_path>http://www.okok.net/Templatehtml/small/249.jpg</img_path>
<html_path>/templatehtml/249.html</html_path>
<Added_date>2011-12-28T00:00:00-08:00</Added_date>
<Template_name>Happy New year 4</Template_name>
<Category>Seasonal</Category>
<Template_Status>1</Template_Status>
</template_maste>
I want to display the image from the img_path in the tableview
Any solutions would be appreciated..,
I’m not sure what your trying to present in your table view cell, but if you want the image to be shown then you need to use
UIImageView(now you just use a label to show the image URL)BTW ImageView is your model so it’s not a good idea to call it “view” i would change it to imageData and add a
UIImageproperty to hold the actual image.So the same way you added a label to your cell, add the image view: