我有一个简单的主从应用程序,我正在使用详细视图来配置数据以插入到主列表中。
我有一个名为“Calculation”的自定义类,这是我需要插入每一行的对象。
我可以将对象从详细视图传递到主视图就好了,它只是不会插入新行。
在详细视图中,我启动我的对象,用数据填充它并使用自定义 segue 将其发送到 MasterViewController 中的“insertNewObject”方法:
- (IBAction)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSString *s = @"1";
NSNumber *n = [f numberFromString:s];
Calculation *calc = [[Calculation alloc] initWithValue:@"$1661.70" descr:@"1 Ounce 24k Gold" textInput:@"1" percentDisplay:@"0%" purityIndex:n metalIndex:n weightUnitIndex:n sliderValue:n];
[segue.destinationViewController insertNewObject:calc];
}
在 MasterViewController 中,这是我的插入代码:
-(void)insertNewObject:(NSObject *)newCalculation {
if (!_objects) {
_objects = [[NSMutableArray alloc] init];
}
[_objects insertObject:newCalculation atIndex:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
NSObject *object = [_objects objectAtIndex:indexPath.row];
cell.textLabel.text = [object valueForKey:@"value"];
cell.detailTextLabel.text = [object valueForKey:@"descr"];
cell.textLabel.shadowColor = [UIColor blackColor];
cell.textLabel.shadowOffset = CGSizeMake(0, -1);
return cell;
}
我可以在 MVC 中使用 NSLog 整天打印对象,但无论我从详细视图控制器添加对象多少次,数组计数始终为 1,并且不会将任何单元格添加到表视图中。
如果我在 MVC 中实例化对象并将其插入,则相同的确切代码可以正常工作。