Draw the Table like this.
Create the new fileMyStaffCellView from Objective-C template derived fromUITableViewCell .
#import <UIKit/UIKit.h> @interface MyStaffCellView : UITableViewCell { Employee* _employee; } - (void) setScreenData:(Employee*)data; @end #import "Employee.h" #import "MyStaffCellView.h" @implementation MyStaffCellView - (id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString*)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { // Initialization code } returnself; } - (void) setScreenData:(Employee*)data { _employee = [data retain]; [selfsetNeedsDisplay]; } - (void) drawRect:(CGRect)rect { NSString* empName = _employee.eName; CGPoint pt = CGPointMake(10.0, 12.0); UIFont* font = [UIFontboldSystemFontOfSize:20.0]; switch (_employee.level) // here level identify the level of hierarchy list { case 0: break; case 1: case 2: case 3: pt.x += 40.0 * _employee.level; font = [UIFont boldSystemFontOfSize:20.0 - (_employee.level * 2)]; break; default: break; } [empName drawAtPoint:pt withFont:font]; } In the UITableView.m class change the code in: - (UITableViewCell*) tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath { static NSString* CellIdentifier = @"Cell"; MyStaffCellView* cell = (MyStaffCellView*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[MyStaffCellViewalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifier] autorelease]; } NSArray* list = _employees.employeeList; Employee* emp = [list objectAtIndex:indexPath.row]; [cell setScreenData:emp]; return cell; } finally you run the program and get the hierarchy list in the tabular form.