2012-06-26 178 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