Передача данных обратно в родительский контроллер для разработки iOS

У меня проблема с отображением выбранных данных в detaillabeltext в одной из моих строк, кроме перезагрузки всей таблицы, какой-либо другой метод, чтобы перезагрузить только определенную строку раздела?

//RootViewController.m (родительский контроллер)

-(void) selectedData:(NSString*) text { selectedAbsenceType = text; NSLog(@"the absence type select is %@",text); } -(void) (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) { cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; } } NSDictionary *dictionary = [dataArray objectAtIndex:indexPath.section]; NSArray *array = [dictionary objectForKey:@"data"]; NSString *cellValue = [array objectAtIndex:indexPath.row]; cell.textLabel.text = cellValue; if([cellValue isEqual: @"Absence Type"]) { cell.detailTextLabel.text = selectedAbsenceType; } else if([cellValue isEqual:@"Start Date"]) { cell.detailTextLabel.text = selectedDate; } return cell; 

}

================================================== ========================================== У меня проблема, когда я вызываю метод протокола, он всегда запрашивает у меня ARC Semantic Issue в этом утверждении

 [self.delegate selectedData: (NSString*) [self.absenceTypes objectAtIndex:indexPath.row]];: 

//child.h

 #import <UIKit/UIKit.h> @protocol childViewControllerDelegate; @interface AbsenceTypesViewController : UITableViewController { id<childViewControllerDelegate>delegate; } @property (nonatomic,weak) id<childViewControllerDelegate> delegate; @property NSArray *absenceTypes; @end @protocol childViewControllerDelegate <NSObject> -(void) selectedData:(NSString*) text; @end //child.m #pragma mark - Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString *selectedCell = nil; selectedCell = [self.absenceTypes objectAtIndex:indexPath.row]; [self.delegate selectedData: (NSString*) [self.absenceTypes objectAtIndex:indexPath.row]]; //[self.navigationController popViewControllerAnimated:YES]; NSLog(@"%@", selectedCell); } 

Удалить { id<childViewControllerDelegate>delegate; } { id<childViewControllerDelegate>delegate; } внутри интерфейса пользовательского класса. id<childViewControllerDelegate>delegate; означает сильную переменную, которая будет выпущена только при освобождении объекта. Но в объявлении свойства вы упоминаете делегата как слабое свойство. Следовательно, ARC Semantic дает вам предупреждение. Вы также можете сделать делегат слабым, объявив его слабым явно как __weak id<childViewControllerDelegate>delegate;

Попробуйте заменить содержимое файла .h на это.

 #import <UIKit/UIKit.h> @class AbsenceTypesViewController; @protocol childViewControllerDelegate <NSObject> -(void) selectedData:(NSString*) text; @end @interface AbsenceTypesViewController : UITableViewController { id<childViewControllerDelegate>delegate; } @property (nonatomic,weak) id<childViewControllerDelegate> delegate; @property NSArray *absenceTypes; @end 

Чтобы вы получили декларацию класса.

  You can save all selected option of second view controller in NSMutable Array and save all components separated by comma and send this array to your parent controller. NSMutableArray *selectedVal =[[NSMutableArray alloc] init]; FirstViewController *FVC = (FirstViewController*) if ([FVC isKindOfClass:[FirstViewController class]]) { [FVC setSelectedOption:[selectedVal componentsJoinedByString:@","]]; } [self.navigationController popViewControllerAnimated:YES];