2012-06-26 129 views
0

我有一个主视图控制器,包含1个按钮,当点击时,推动一个细节视图控制器和另一个按钮,只是启动一个模式视图控制器有一个表。这个详细视图控制器有一个按钮,当点击时应该添加一个新的对象到由模式视图控制器中的表加载的数组中。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

+0

是否在任何地方定义了** kDateText **和** kTimeStampText **?另外,请确保**时间**和**日期**不为空。 – WrightsCS

+2

@CReaTuS我接受了他们。我只是不接受那些不起作用的答案。 – jaytrixz

+0

@WrightsCS yup,它被定义为@“TimeStamp”和@“Date”。 – jaytrixz

回答

1

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

+0

我现在要做。谢谢Nishant!你有任何其他想法如何解决这个问题? – jaytrixz

+0

我希望这有助于。让我知道是否有任何问题与此..我会想到一些其他问题,可能是.. – Nishant

+0

我加了它,但没有发生。我只想让表格反映在主视图中按下按钮之后对NSMutableArray所做的更改。 – jaytrixz

2

尝试初始化您NSMutableArray有:

NSMutableArray *array = [NSMutableArray array]; 

现在你是开放的添加条目。

让我知道这是否适合你。

+0

它什么也没做。我恢复了它。谢谢。 – jaytrixz

+0

这将初始化你的数组...在此之后,你应该可以添加条目。 – Kunjal