2016-04-21 5 views
0

Gibt es eine Möglichkeit, die Anzahl der UISwitch zu kennen, die "ON" Zustand in einem UITableView ist? Ich habe eine multiple UITableViewCell in einem UITableView - jeder hat einen UISwitch, der "ON" ist. Ich denke, der Code würde wie etwas mehr sein:Wie kann man die Anzahl der UISwitch, die in einem UITableView "Ein" ist, wissen?

for ([mySwitch on] in tableView){ 
    code goes here..... 
} 
+0

ist Ihre Tabellenansicht mit statischen Zellen oder dynamischen Zellen? und die Antworten werden sehr unterschiedlich sein. – MudOnTire

+0

Im mit dynamischen Zellen. – macky12345

+0

noch etwas Hilfe hier benötigt – macky12345

Antwort

0

Sie wissen, ios Entwicklung verwendet das MVC-Muster, den Inhalt, den Sie in einer Ansicht anzeigen oder die Zustände von UI-Widgets sollten mit Ihren Ansichtsmodellen binden, wie in Ihrem Fall können Sie ein Ansichtsmodell wie SwichViewModel erstellen a BOOL-Eigenschaft isSwitchOn, wenn Sie Ihre Tabellenansicht laden, aktivieren/deaktivieren Sie die Switch-Basis in der Eigenschaft isSwitchOn des Ansichtsmodells und die Anzahl der aktivierten Schalter ist die Anzahl der Ansichtsmodelle, die isSwitchOn ist JA. Unten ist mein Beispielcode:

//create the view model 
@interface SwitchViewModel : NSObject 

@property (assign, nonatomic) BOOL isSwitchOn; 

@end 

@interface TableViewController() 

@property (strong, nonatomic) NSArray *switchViewModels; 

@end 

@implementation TableViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.switchViewModels = [self getData]; // you need to implement the getData method 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return self.switchViewModels.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    SwitchViewModel *model = self.switchViewModels[indexPath.row]; 
    SwitchTVCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellID" forIndexPath:indexPath]; 
    cell.switcher.on = model.isSwitchOn; 
    return cell; 
} 

- (NSInteger)getCountOfSwitchsOn{ 
    NSArray *switchsOn = [self.switchViewModels filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"isSwitchOn == %@", @(YES)]]; 
    return switchsOn.count; 
} 

@end 
+0

Hallo MudOnTire dank seiner Arbeit - obwohl ich den Schalter nicht auf "aus" einstellen kann, auch wenn ich bereits einen statischen Wert NEIN darauf gesetzt habe. – macky12345

+0

MyBookingObjects * booking1 = [[MyBookingObjects alloc] initWithId: @ "1" startDateTime: @ "Startdatum" endDateTime: @ "Enddatum" sitterVerfügbarkeit: @ "2" streetAddress: @ "SomeStreet" Vorort: @ "SomeSuburd" postalCode: @ "SomePostalCode" contactNumber: @ "SomeContactNumber" nameOfChild: @ "Noch kein Kind gespeichert." childYrsOld: nil addInfo: @ "Reinigen Sie das Geschirr" profileImage: [UIImage imageNamed: @ "boy_unselected"] isSwitchOn: @ (NO)]; – macky12345

+0

Was ist der richtige Eintrag isSwitchOn: [nsNummer numberWith Bool: 0]; oder isSwitchOn: @ (NO) – macky12345

2

Sie haben änderbare Array zu halten (NSMutableArray) gemäß der UISwitch, wenn der Schalter geht an/aus Sie diesen Wert halten müssen (Flag) in änderbarer Array.

Wenn Sie UITableView erneut laden, machen Sie alle Array-Elemente mit ON-Flag. Wenn Sie Ihren Schalter auf Aus stellen, dann feuern Sie eine Methode des Schalters und gemäß indexpath.row müssen Sie bei ObjektAtIndex im Array OFF-Flag.

So dass Array Ihnen alle Werte von keiner der Schalter sind an oder aus.

Verwandte Themen