2012-01-02 63 views
0

我有一個應用程序,我需要在一個頁面中保存提醒,並在其他顯示保存的提醒。我已經成功地使用sqlite3!如何根據選擇器視圖中選擇的行組件更新表視圖數據

在視圖提示頁面中,用戶將有3個選項可供查看,查看我已經實現的所有視圖組,包含4組提示。由於它們只是4組,因此我創建了4個視圖控制器4獨特groups.Just簡單地使用它的工作完美以下查詢:

NSString *sqlQuery = [NSString stringWithFormat:@"select * from reminders WHERE grp = 'Friends'"]; 

但是我有一個觀點每月網頁,其中包含在選擇器視圖12個組件的用戶選擇,即所有12個月的問題年:

我已經找到了在特定月份檢索所有提醒的查詢,比如說d月月‧日,我曾嘗試使用下面的查詢檢索:

NSString *sqlQuery = [NSString stringWithFormat:@"select * from reminders WHERE Date BETWEEN '2012-12-01' AND '2012-12-31'"]; 

進入查看每月的頁面(控制器)之前,還有我剛纔提到了一個月選擇器視圖,我知道我們能有獨立的視圖控制器頁用於顯示12個月的數據,就像我在查看組提醒時所做的那樣,但是代碼變得繁忙。因此,我希望根據在選取器視圖(行組件)中選擇的月份自動更新表視圖。

我發現了一個類似的問題,但問題沒有得到答案!

Update table view data based on row component selected in picker view

我試圖其中選擇器視圖存在對於其中得到顯示的數據視圖控制器來創建類控制器的一個實例:

ERViewEditController * viewEditController;

,並在檢索我用下面的代碼:

if(viewEditController.monthPicker selectedRowInComponent:0) 
{ 
sqlQuery = [NSString stringWithFormat:@"select * from reminders WHERE Date BETWEEN '2012-01-01' AND '2012-01-31'"]; 
sql_stmt = [sqlQuery UTF8String]; 
} 

else if(viewEditController.monthPicker selectedRowInComponent:1) 
{ 
sqlQuery = [NSString stringWithFormat:@"select * from reminders WHERE Date BETWEEN '2012-02-01' AND '2012-02-31'"]; 
sql_stmt = [sqlQuery UTF8String]; 
} 

等...等所有個月,然後用下面的代碼顯示:現在越來越顯示

if (sqlite3_prepare_v2(self.remindersDB, sql_stmt, -1, &statament, NULL) == SQLITE_OK) 
     { 
      while (sqlite3_step(statament) == SQLITE_ROW) 
      {    
       ReminderClass *remin = [[ReminderClass alloc]init]; 

       remin.Name = [[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statament, 1)]autorelease]; 
       remin.Event = [[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statament, 2)]autorelease]; 
       remin.Date = [[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statament, 3)]autorelease]; 

       NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; 
       [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
       NSDate *date = [dateFormat dateFromString:remin.Date]; 
       [dateFormat setDateFormat:@"MMMM dd"]; 
       NSString *dateVal = [dateFormat stringFromDate:date]; 
       remin.Date = dateVal; 

       [self.monthArray addObject:remin]; 
       [remin release]; 
      } 

      sqlite3_finalize(statament); 
     } 

沒有:(

我該如何達到這個要求,能不能請你幫我一把寶貴的建議!

感謝所有提前:)

回答

1

你應該只是調用reloadData方法。

if in。^ h fileyou都具有的TableView的

UITableView *table; 

然後,當你想更新你的表對象,你應該寫,

[table reloadData]; 
+0

是啊,我知道如何重新加載table.But的數據我要求是:我有一個12個月的選擇器視圖。現在,當我選擇一行時,它將導航到一個視圖控制器,在該視圖控制器中顯示與該月相對應的提醒。 但我不能有12個視圖控制器來顯示12個相應月份的提醒。所以我希望表視圖根據選定的月份自動更新。是否有任何方式將選擇器視圖行組件與表視圖數據... 請幫我在這方面。請再次看到這個問題... 感謝您的回答和關注:) – 2012-01-02 07:46:29

1
  1. 選擇PickerView的行

  2. 保存成字符串

  3. 將此字符串存取到新的View Controller中,你的UITableView委託方法實施的地方

  4. cell.textLabel.text = str;其中str是,您只需在pickerView

  5. 選擇在新的視圖控制器,你在哪裏訪問字符串的方法的字符串,寫一行代碼[table reloadData];

+0

感謝您的答案,將實施並取回給您! – 2012-01-02 08:10:50

0

調試您通過插入調試點代碼在線。

[self.monthArray addObject:remin]; 

那麼,你應該寫下面的代碼來確認或者您的數組爲空或有需要的值。

for(int i=0;i<[self.monthArray count];i++) 
{ 
NSLog("Array ids :%@",[self.monthArray ObjectAtIndex:i]) 
} 

如果它打印在控制檯中正確的價值觀,那麼你應該寫在委託方法cellForRowAtIndex以下行。

cell.textLabel.text = [self.monthArray objectAtIndex:indexPath.row]; 
+0

謝的回答,它在控制檯被顯示爲: 數組ids: 2012-01-02 19:11:26.083 EventsReminder [6450:207]數組IDS: 2012 -01-02 19:11:26.083 EventsReminder [6450:207] Array ids: 2012-01-02 19:11:26.084 EventsReminder [6450:207] Array ids: 2012 -01-02 19:11:26.085 EventsReminder [6450:207] Array ids: 2012-01-02 19:11:26.085 EventsReminder [6450:207] Array ids: 2012-01-02 13:42:28

+0

please清楚地看到編輯過的問題:) – 2012-01-02 13:48:17

+0

我在這個鏈接中找到了答案: http:// stackover流。com/questions/8708543 /獲取選定值的選取器視圖,這是目前在不同的觀點和使用th 感謝khalid爲每件事情:) – 2012-01-04 07:11:48

相關問題