2013-01-21 36 views
1

您好我正在使用UITableView和UISwitch。我有包含UISwitches的自定義單元格。在開始時,UISwitch關閉,我打開它。當我打開另一個單元中的UISwitch時,開始時打開的UISwitch應該關閉。我在cellForRowAtIndexPath中實現了這一點。如何禁用uitableview的自定義單元中的uiswitch

我在檢查是否針對特定症狀選擇了remedyID。如果選擇開啓,則應關閉休息。我甚至可以獲取數據。

cell.remedyID=[[[remedyArray objectAtIndex:indexPath.row] 
           objectForKey:@"RemedyID"]intValue]; 

cell.symptomIDNo =[[[remedyArray objectAtIndex:indexPath.row] 
            objectForKey:@"SymptomID"]intValue]; 

int checkValue = [[activeNotificationDictionary objectForKey: 
        [[remedyArray objectAtIndex:indexPath.row] 
          objectForKey:@"SymptomID"]]intValue]; 

if (cell.remedyID == checkValue){ 

    objdb.notifyMe.on = YES; 
} else { 

    objdb.notifyMe.on = NO; 
} 


- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{ 

    if (buttonIndex != [alertView cancelButtonIndex]){ 

     [activeNotificationDictionary setObject: 
      [NSNumber numberWithInt:selectedRemedyID] forKey: 
          [NSNumber numberWithInt:iPath]]; 

     [remedyTableView reloadData]; 
    }  
} 

所以,如果有人能幫助我..that將是巨大的

+1

你用你發佈的代碼得到了什麼結果? – rdelmar

+0

當我打開第二個uiswitch ..我得到一個alertview,當我點擊確定..第一個uiswitch沒有關閉。兩個開關保持打開。如果你想要,我可以郵寄你的.m文件.u會變得更好主意 –

+0

這會有所幫助。您可以將它發送到[email protected] – rdelmar

回答

0

我想你的數據陣列提供了uiTable檢查內容中設置一個布爾,天氣一開關或關閉。

當您觸發一個開關時,將索引保存在作爲tableview委託的類的全局變量中。然後在alertview中,您可以使用保存的索引來操作數據陣列中交換機狀態的布爾值。 之後你重新加載表。

當然,你必須改變你的cellForRowAtIndexPath,這樣,開關的狀態取自布爾值,而不是默認關閉。

0

我認爲你的remedyArray包含補救對象。這些對象應該具有布爾屬性並使用該屬性打開和關閉它。當你打開一個迭代並關閉其他的。如果你不能將BOOL屬性添加到補救類中,請考慮創建一個繼承的類或類擴展。 現在,這是一種方式。如果您太擔心內存,請使用實例變量來存儲已打開的行的索引路徑。並且使用該變量顯示相應的單元意味着打開或關閉開關。當選擇一個新開關時,只需調用重新加載數據,表格應該正確繪製。

+0

Siby我已經調用重新加載數據時,新開關被選中..我已經調用它在 - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex –