2013-03-10 41 views
0

the below pic shows my appNSTableView的保存價值,而不按上失去重心

「第一號」是由「第二個號碼」相乘回車鍵給「小計」。按壓「合計」鍵給出「小計」

的總和作爲可以在圖像中看到,含有數字「5」的單元處於編輯狀態。當我點擊「Total」按鈕時,會觸發一個方法,將「小計」列中的數字相加。我希望處於可編輯狀態的數字在執行添加之前自動保存,以便正確答案爲156.00而不是136.00,如「總計」按鈕下方的標籤所示

回答

2

召回MVC設計模式

NSTableView只是一個視圖,並顯示您的模型(陣列)到它。

所以你改變鑑於部分的價值,但你的模型沒有改變。您需要更改模型,即數組或您在tableview中顯示的任何集合。

在按鈕操作中只需調用[tableView reloadData]然後- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row :將調用tablview的委託方法,您的模型將被更新。導致您輸入的數據。

檢查例如:

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     self.array=[NSMutableArray new]; 

     for (NSInteger i=0; i<30; i++) { 
      [self.dict setObject:[NSString stringWithFormat:@"Obj %ld",i] forKey:[NSString stringWithFormat:@"%ld",i]]; 
      self.array[i][email protected](i); 
     } 
    } 
    return self; 
} 

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{ 
    return self.array.count; 
} 

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{ 
    return self.array[row]; 
} 


- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{ 
    self.array[row]=object; 

} 

你的答案就在這裏:

- (IBAction)button:(id)sender { 

    [self.myTable reloadData]; 

    NSInteger row=[self.myTable selectedRow]; 
    NSLog(@"%@",[self.array objectAtIndex:row]); 

} 
+1

感謝,Anoop ...... [theTableView reloadData]解決它 – Rounak 2013-03-10 08:09:23

+0

我更多的東西,如果你是將總數保存到模型中不好,或者您應該在從模型中讀取後計算它。由於對模特的節約總是不好的方式,而且它浪費了記憶。 – 2013-03-10 08:10:56

0

您需要跟蹤單元格(或者實際上是文本字段),並且當觸摸「總計」按鈕時,在該文本字段上調用「resignFirstResponder」,該文本字段還應該更新您的小計以及您的數組或控制器,最終會爲您提供正確的總計。

跟蹤要編輯的單元格的一種方法是將所有可編輯單元格的文本字段設置爲全部使用視圖(或窗口)控制器作爲委託,然後您將知道正在編輯哪個單元格基於委託方法control:textShouldBeginEditing:(編輯中通過「control」參數傳遞的文本字段......你可以保持在伊娃和財產跟蹤它)。這就是您可以稱爲「resignFirstResponder」的單元格。