NSMutableArray不添加对象

时间:2012-06-26 04:11:26

标签: xcode nsmutablearray

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

问题是,添加新对象按钮并不会添加到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];
}

主视图的屏幕截图:

enter image description here

详细视图:

enter image description here

表格视图:

enter image description here

2 个答案:

答案 0 :(得分:2)

尝试使用以下内容初始化NSMutableArray

NSMutableArray *array = [NSMutableArray array]; 

现在您可以添加条目。

请告诉我这是否适合您。

答案 1 :(得分:1)

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