0

我有一个主视图控制器,它由一个按钮组成,当点击该按钮时,它会推动一个详细视图控制器和另一个按钮,它只是启动一个具有表格的模态视图控制器。此详细视图控制器有一个按钮,当点击该按钮时,应将一个新对象添加到由模态视图控制器中的表加载的数组中。

问题是,添加新对象按钮不会添加到 NSMutableArray。

当我在主视图中放置一个按钮并分配将对象添加到 NSMutableArray 的相同方法时,它就可以工作了。当按钮放置在通过导航控制器和模态视图呈现的另一个视图控制器上时,它只是不起作用。

这是我在详细视图控制器中按下按钮时的代码:

- (IBAction)confirmBtnPressed
{
    // Gets the current time and formats it
    NSDate *timeNow = [NSDate date];
    NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
    [timeFormatter setDateFormat:@"hh:mm a"];

    // Gets the current date and formats it
    NSDate *dateNow = [[NSDate alloc] init];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"MMM dd, yyyy"];

    NSString *currentTime = [timeFormatter stringFromDate:timeNow];
    NSString *currentDate = [dateFormatter stringFromDate:dateNow];
    NSString *timestamp = currentTime;
    NSString *date = currentDate;

    // This is where values gets saved
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:timestamp       forKey:kTimeStampText];
    [defaults setObject:date            forKey:kDateText];
    [defaults synchronize];

    NSString *timeToday = [defaults objectForKey:kTimeStampText];
    NSString *dateToday = [defaults objectForKey:kDateText];

    tableVC.tableDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:timeToday, @"Time", dateToday, @"Date", nil];
    [tableVC.tableArray addObject:tableVC.tableDict];
    [tableVC.table reloadData];
}

当按下模态加载表格的按钮时,这是我在主视图控制器中的代码:

// Table loaded
- (IBAction)viewHistoryPressed:(id)sender
{
    if (!self.historyViewController)
    {
        self.historyViewController = [[HistoryViewController alloc] initWithNibName:@"HistoryViewController" bundle:nil];
    }

    [self presentModalViewController:historyViewController animated:YES];
}

这是我的表视图控制器中的 viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *time = [defaults objectForKey:kTimeStampText];
    NSString *date = [defaults objectForKey:kDateText];

    tableDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:time, @"Time", date, @"Date", nil];

    tableArray = [[NSMutableArray alloc] initWithObjects:tableDict, nil];
}

主视图截图:

在此处输入图像描述

详细视图:

在此处输入图像描述

表视图:

在此处输入图像描述

4

2 回答 2

2

尝试初始化你NSMutableArray的:

NSMutableArray *array = [NSMutableArray array]; 

现在您可以添加条目了。

让我知道这是否适合您。

于 2012-06-26T10:25:31.537 回答
1

在 viewDidLoad 方法中...请在分配时使用 self.tableDict 和 self.tableArray。'self' 调用 getter 和 setter 方法,所以它是 imp。

于 2012-06-26T10:13:08.593 回答