Я немного новичок в разработке iOS. У меня эти методы объявлены и реализованы в двух отдельных контроллерах представлений (контроллере главного представления и контроллере представления редактора) и необходимо передать данные из редактора в мастер. Мастер содержит табличное представление, которое необходимо обновить с соответствующим именем. (Примечание: Я использовал шаблон Master-Detail приложений по умолчанию для iPhone я не вручную создать это с одноместным-View Application.)UITableView не обновляется после отклонения редактора редактора
В настоящее время UITableView внутри MasterViewController не обновляется с новой ячейки , Для меня была такая неспокойная неделя, я просто должен что-то упустить. Вот код для Master View Controller:
@implementation FTMasterViewController
@synthesize bPlusMinusField, cPlusMinusField, cTerm, bTerm;
-(void) passTrinomial:(CCTrinomial *)tri withBPlusMinusField:(NSString *)bField withBTerm:(double)bTermField withCPlusMinusField:(NSString *)cField withCTerm:(double)cTermField {
//allocate the array
if (!self.trinomials) {
self.trinomials = [[NSMutableArray alloc] init];
}
//set Master VC properties to tri fields passed in
self.bPlusMinusField = bField;
self.cPlusMinusField = cField;
self.bTerm = bTermField;
self.cTerm = cTermField;
NSString *trinomial = [NSString stringWithFormat:@"x² %@ %g %@ %g", bPlusMinusField, bTerm, cPlusMinusField, cTerm];
[self.trinomials insertObject:trinomial atIndex:0];
NSLog(@"%lu", (unsigned long)[self.trinomials count]);
}
#pragma mark - Table View
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.trinomials count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.textLabel.text = [NSString stringWithFormat:@"x² %@ %g %@ %g", bPlusMinusField, bTerm, cPlusMinusField, cTerm];
return cell;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSDate *object = _objects[indexPath.row];
[[segue destinationViewController] setDetailItem:object];
}
}
@end
Это код, который я счел необходимым, чтобы увидеть, чтобы решить эту проблему: очевидно, у меня по умолчанию переопределены методы в остальной части реализации в.
Это код контроллера редактора. Когда мысль появляется для вас, да, кнопка «done» связана с методом -handleDoneButtonPushed: в моей основной раскадровке.
-(IBAction)handleDoneButtonPushed:(id)sender {
[self dismissViewControllerAnimated:YES completion:NULL];
FTMasterViewController *masterVC = [[FTMasterViewController alloc] init];
[masterVC passTrinomial:factoring withBPlusMinusField:bPlusMinusField.text withBTerm:[bTriField.text doubleValue] withCPlusMinusField:cPlusMinusField.text withCTerm:[cTriField.text doubleValue]];
}
Этот редактор-контроллер просто получает несколько значений в виде UITextField и вручает их к главному View Controller через объект этого класса. Опять же, когда я нажимаю кнопку «Готово» на моем верхнем навигационном баре, он отклоняет редактор View View, но не обновляет представление таблицы с полученными значениями.
Справка была бы принята с благодарностью. :)
A-hah! Я знал, что чего-то не хватает. Раньше я использовал шаблон делегирования, но я неправильно думал о том, как я использовал этот метод. Позвольте мне попробовать и посмотреть, как это работает. –
@ HunterE. Рад помочь вам. Вставка триномии - это то, над чем вам нужно работать. – Anupdas
Ну, под -handleDoneButtonPushed: метод, я сделал это: [self.delegate editorController: self didCompleteEditingTrinomial: trinomialString], а затем принял протокол и реализовал метод в FTMasterViewController. Я просто вставил код прямо в реализацию, но представление таблицы все еще не обновляется. Я пересмотрел таблицу-tableView: cellForRowAtIndexPath: для обработки массива, но все же этого не делает. Мысли? –