4545
4646CGRect IASKCGRectSwap (CGRect rect);
4747
48- @interface IASKAppSettingsViewController () <UITextViewDelegate>
48+ @interface IASKAppSettingsViewController () <IASKSettingsReaderDelegate, UITextViewDelegate>
4949
5050@property (nonatomic , weak ) UIViewController *currentChildViewController;
5151@property (nonatomic , strong ) NSMutableDictionary *rowHeights;
@@ -71,7 +71,7 @@ @implementation IASKAppSettingsViewController
7171- (IASKSettingsReader*)settingsReader {
7272 if (!_settingsReader) {
7373 NSBundle * bundle = _bundle == nil ? NSBundle .mainBundle : _bundle;
74- _settingsReader = [[IASKSettingsReader alloc ] initWithFile: self .file bundle: bundle];
74+ _settingsReader = [[IASKSettingsReader alloc ] initWithFile: self .file bundle: bundle delegate: self ];
7575 if (self.neverShowPrivacySettings ) {
7676 _settingsReader.showPrivacySettings = NO ;
7777 }
@@ -111,14 +111,14 @@ - (void)setFile:(NSString *)file {
111111 self.tableView .contentOffset = CGPointMake (0 , -self.tableView .contentInset .top );
112112 self.settingsReader = nil ; // automatically initializes itself
113113 if (!_reloadDisabled) {
114- [self .tableView reloadData ];
115114 [self createSelections ];
115+ [self .tableView reloadData ];
116116 }
117117}
118118
119119- (void )createSelections {
120120 NSMutableArray *sectionSelection = [NSMutableArray new ];
121- for (int section = 0 ; section < _settingsReader .numberOfSections ; section++) {
121+ for (int section = 0 ; section < self. settingsReader .numberOfSections ; section++) {
122122 IASKSpecifier *specifier = [self .settingsReader headerSpecifierForSection: section];
123123 if ([specifier.type isEqualToString: kIASKPSRadioGroupSpecifier ]) {
124124 IASKMultipleValueSelection *selection = [[IASKMultipleValueSelection alloc ] initWithSettingsStore: self .settingsStore tableView: self .tableView specifier: specifier section: section];
@@ -368,6 +368,7 @@ - (void)setHiddenKeys:(NSSet*)theHiddenKeys animated:(BOOL)animated {
368368 }
369369 } else {
370370 self.settingsReader .hiddenKeys = theHiddenKeys;
371+ [self createSelections ];
371372 if (!_reloadDisabled) [self .tableView reloadData ];
372373 }
373374 }
@@ -600,7 +601,7 @@ - (UITableViewCell*)tableView:(UITableView *)tableView newCellForSpecifier:(IASK
600601}
601602
602603- (UITableViewCell *)tableView : (UITableView *)tableView cellForRowAtIndexPath : (NSIndexPath *)indexPath {
603- IASKSpecifier *specifier = [self .settingsReader specifierForIndexPath: indexPath];
604+ IASKSpecifier *specifier = [self .settingsReader specifierForIndexPath: indexPath];
604605 if ([specifier.type isEqualToString: kIASKCustomViewSpecifier ] && [self .delegate respondsToSelector: @selector (settingsViewController:cellForSpecifier: )]) {
605606 UITableViewCell* cell = [self .delegate settingsViewController: self cellForSpecifier: specifier];
606607 assert (nil != cell && " delegate must return a UITableViewCell for custom cell types" );
@@ -1090,6 +1091,31 @@ - (void)presentChildViewController:(UITableViewController<IASKViewController> *)
10901091 }
10911092}
10921093
1094+ #pragma mark -
1095+ #pragma mark IASKSettingsReaderDelegate
1096+ - (nullable NSArray <NSString*>*)titlesForSpecifier : (IASKSpecifier*)specifier {
1097+ if ([self .delegate respondsToSelector: @selector (settingsViewController:titlesForSpecifier: )]) {
1098+ return [self .delegate settingsViewController: self titlesForSpecifier: specifier];
1099+ }
1100+ return nil ;
1101+ }
1102+
1103+ - (NSArray *)valuesForSpecifier : (IASKSpecifier*)specifier {
1104+ if ([self .delegate respondsToSelector: @selector (settingsViewController:valuesForSpecifier: )]) {
1105+ return [self .delegate settingsViewController: self valuesForSpecifier: specifier];
1106+ }
1107+ return nil ;
1108+ }
1109+
1110+ - (void )setMultiValuesFromDelegateIfNeeded : (IASKSpecifier *)specifier {
1111+ if (specifier.multipleValues .count == 0 ) {
1112+ NSArray *titles = [self titlesForSpecifier: specifier];
1113+ NSArray *values = [self valuesForSpecifier: specifier];
1114+ [specifier setMultipleValuesDictValues: values titles: titles];
1115+ [specifier sortIfNeeded ];
1116+ }
1117+ }
1118+
10931119#pragma mark -
10941120#pragma mark MFMailComposeViewControllerDelegate Function
10951121
@@ -1294,18 +1320,6 @@ - (void)reload {
12941320 [self .tableView performSelector: @selector (reloadData ) withObject: nil afterDelay: 0.5 ];
12951321}
12961322
1297- - (void )setMultiValuesFromDelegateIfNeeded : (IASKSpecifier *)specifier {
1298- if (specifier.multipleValues .count == 0 ) {
1299- if ([self .delegate respondsToSelector: @selector (settingsViewController:valuesForSpecifier: )] &&
1300- [self .delegate respondsToSelector: @selector (settingsViewController:titlesForSpecifier: )])
1301- {
1302- [specifier setMultipleValuesDictValues: [self .delegate settingsViewController: self valuesForSpecifier: specifier]
1303- titles: [self .delegate settingsViewController: self titlesForSpecifier: specifier]];
1304- }
1305- [specifier sortIfNeeded ];
1306- }
1307- }
1308-
13091323
13101324#pragma mark CGRect Utility function
13111325CGRect IASKCGRectSwap (CGRect rect) {
0 commit comments