I want to make tableView with multiple section but i do not want to use dictionary i have two arrays i want that first array should be loaded in first section and second in second sections.
I have arrayOne with 3 items and arrayTwo with 4 items so how to add them and show them in sections.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(section == 0)
return resultArray.count;
else
return resultArray.count;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSLog(@"Number of Sections");
if(section == 0)
return @"Section 1";
if(section == 1)
return @"Section 2";
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Table Cell Data");
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate];
if (indexPath.section==0) {
appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate];
ObjectData *theCellData = [resultArray objectAtIndex:indexPath.row];
NSString *cellValue =theCellData.category;
NSLog(@"Cell Values %@",cellValue);
cell.textLabel.text = cellValue;
return cell;
}
else {
ObjectData *theCellData = [resultArray objectAtIndex:indexPath.row];
NSString *cellValue =theCellData.category;
cell.textLabel.text = cellValue;
return cell;
}
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2 ;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (section==0)
{
return [array1 count];
}
else{
return [array2 count];
}
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
if(section == 0)
return @"Section 1";
else
return @"Section 2";
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
if (indexPath.section==0) {
ObjectData *theCellData = [array1 objectAtIndex:indexPath.row];
NSString *cellValue =theCellData.category;
cell.textLabel.text = cellValue;
}
else {
ObjectData *theCellData = [array2 objectAtIndex:indexPath.row];
NSString *cellValue =theCellData.category;
cell.textLabel.text = cellValue;
}
return cell;
}
Here are the relevant Swift 3 lines:
func numberOfSections (in tableView: UITableView) -> Int {
...
return numberOfSections
}
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
//Not necessary, but will let you format the section headers. Example:
guard let header = view as? UITableViewHeaderFooterView else { return }
header.textLabel?.font = UIFont.boldSystemFont(ofSize: 24)
header.textLabel?.textColor = UIColor.darkGray
header.textLabel?.textAlignment = .center
header.textLabel?.frame = header.frame
view.tintColor = UIColor.white
}
func tableView(_ tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int) {
//Also not necessary, but clear footers help space out sections
view.tintColor = UIColor.clear
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
//Spacing between sections:
return 25
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
...
return sectionCount
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//All your cell setup
...
//I call this to get the absolute row number (disregarding sections)
let row = getAbsoluteRow_InCurrentSection(indexPath: indexPath)
//Now you can use the row number to grab a value from an array or CoreData object and use the value to populate your cell!!
}
func getAbsoluteRow_InCurrentSection(indexPath: IndexPath) -> Int {
var aggRows = 0
if currentListEntity == "GrocTask" {
let curSection = indexPath.section
for i in 0..<curSection {
aggRows += flex1ArrayCnt[i]
}
aggRows += indexPath.row
}
return aggRows
}
//Please be aware, I only included those directly relevant to building a UITableView with sections. I did not include editActions, didSelect, or other UITableView delegate functions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With