2012-04-05 52 views
0

我發現了很多問題,幾乎問我在做什麼後,但一直未能實現我自己的解決方案。UITableViewCell禁用單元,然後重新啓用和更新,無需重新加載視圖

我在我的UITableViewController中有2個部分,並且到目前爲止一切工作都很好。我有一個AlarmEnabled UISwitch和一個AlarmDate單元,它提取UIActionSheet,以便可以選擇火災日期等。我試圖禁用/灰色AlarmDate單元格(單元格0),否定AlarmEnabled UISwitch在「即時的」。這確實工作,但只有我a)否定UISwitch b)通過取消/保存UIButton退出視圖c)重新進入視圖。

到目前爲止我試過的tableView:reloadRowsAtIndexPath:方法如下:

NSIndexPath *tempIndexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
NSArray *tempIndexPathArray = [[NSArray alloc] initWithObjects:tempIndexPath, nil]; 
[self.tableView reloadRowsAtIndexPaths:tempIndexPathArray withRowAnimation:UITableViewRowAnimationNone]; 
[tempIndexPathArray release]; 

也許是由於我的開關與iOS編程的關係,我只是誤會這樣代碼應放在(目前放置在AlarmEnabled UISwitch附件的選擇器),但它不能完成我之後的工作(但如果使用正確,聽起來應該是這樣)。

我想我會嘗試,以增加我的認知和嘗試類似的選擇了UISwitch以下,

#define NOT(a) !a 
.... 
UITableViewCell *tempCellAlarmDate = [self.tableViewController.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 
tempCellAlarmDate.userInteractionEnabled = NOT(tempCellAlarmDate.userInteractionEnabled); 
// forget transparency for now. 
//tempCellAlarmDate.alpha = 0.0; 

..但輕快,小跑齧齒動物在我的頭骨發電機供電不批准此代碼,因此我的實時userInteractionEnabled切換的夢想未實現。

任何意見理解:-)

由於

SC。

+0

'#define NOT(a)!a' - 你在開玩笑嗎? – Sulthan 2012-04-05 17:54:21

+0

@Sulthan - 請解釋你的意思,而不是發表修辭。 – swisscheese 2012-04-05 20:42:51

+0

您正在使用宏將編程語言轉換爲您自己的編程語言。這不是一個好主意。 – Sulthan 2012-04-05 21:51:50

回答

0

我很想念您在單元格上調用setEnabled:方法的位置。或者你是否使用其他方法禁用它?根據我的經驗,setEnabled:NO實時禁用單元格,並且setEnabled:YES將其恢復。也許我錯過了什麼?

+0

嗨,我不確定你指的是哪個類,因爲UITableViewCell似乎不包含setEnabled:方法。你能澄清嗎?謝謝! – swisscheese 2012-04-05 16:06:54

+0

我的不好。 setEnabled在NSControl中,它由NSTableViewCell繼承,但不是UITableViewCell。您可能可以設置editingStyle屬性,但我不確定它是否像setEnabled一樣具有即時效果。 – DRVic 2012-04-05 19:03:06

+0

沒有probs!我的搜索繼續:-)感謝您的時間。 – swisscheese 2012-04-06 07:33:54

相關問題