编辑:我仍然需要回答!
我有2个UIViewControllers(让我们称之为 ParentVC 和 SecondVC )。
SecondVC上有11个UISwitch元素,1个按钮用于将每个UISwitch的状态从SecondVC发送到ParentVC。
在parentVC中,我需要一个包含NSDictionary键的NSArray(在IBAction中有描述)。 我有IBAction:
NSDictionary *resultDic = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool: [_cafeSwitch isOn]], @"Cafe",
.....
[NSNumber numberWithBool: [_bowlingSwitch isOn]], @"BowlingClub",
nil];
NSMutableArray *resultArray = [[NSMutableArray alloc] init];
for (NSString *key in resultDic) {
NSNumber *value = [resultDic valueForKey:key];
if ([value compare:[NSNumber numberWithInt:1]] == NSOrderedSame)
[resultArray addObject:key];
}
[_delegate sendSelectedPlaceTypeArray:[NSArray arrayWithArray:resultArray]];
[self dismissViewControllerAnimated:YES completion:^{}];
方法sendSelectedPlaceTypeArray
是在ParentVC中接收此NSArray的委托方法。
默认状态下选择所有切换台。
在ParentVC中,我实现了委托方法:
- (void)sendSelectedPlaceTypeArray:(NSArray *)placeTypeArray {
filteredPlaceTypeArray_ = placeTypeArray;
}
默认情况下,filteredPlaceTypeArray_包含所有11种地点类型。
filteredPlaceTypeArray_ = [NSArray arrayWithObjects:@"Cafe", ... ,@"BowlingClub", nil];
呈现SecondVC的方法是:
- (IBAction)showPlaceTypeFilter:(id)sender {
UIStoryboard *iPhoneStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
PlaceTypeFilterViewController *destViewController = [iPhoneStoryboard instantiateViewControllerWithIdentifier:@"PlaceTypeFilterViewController"];
destViewController.delegate = self;
destViewController.currentFilteredPlaceTypesArray = filteredPlaceTypeArray_;
[self presentViewController:destViewController animated:YES completion:nil];
}
我有很多问题:
我希望我的问题是正确的,谢谢,Artem。
答案 0 :(得分:-1)
正如我对你的理解,这里是从视图中获取所有对象的方法:
for (UISwitch *mySwitch in [self.view subviews]) {
if ([mySwitch isKindOfClass:[UISwitch class]]) {
NSLog(@"State == %@",[mySwitch description]);
//Do what ever you want to do with your switches
}
}
编辑:此答案在编辑之前与原始问题有关。
如何以编程方式为每个UISWitch设置状态