mirror of
https://github.com/LeoNatan/LNPopupController.git
synced 2026-07-30 16:11:51 +00:00
Import latest LNPopupController master branch with iOS 12 fixes
This commit is contained in:
+135
@@ -0,0 +1,135 @@
|
||||
//
|
||||
// SettingsTableViewController.m
|
||||
// LNPopupControllerExample
|
||||
//
|
||||
// Created by Leo Natan on 18/03/2017.
|
||||
// Copyright © 2017 Leo Natan. All rights reserved.
|
||||
//
|
||||
|
||||
#import "SettingsTableViewController.h"
|
||||
|
||||
NSString* const PopupSettingsBarStyle = @"PopupSettingsBarStyle";
|
||||
NSString* const PopupSettingsInteractionStyle = @"PopupSettingsInteractionStyle";
|
||||
NSString* const PopupSettingsProgressViewStyle = @"PopupSettingsProgressViewStyle";
|
||||
NSString* const PopupSettingsCloseButtonStyle = @"PopupSettingsCloseButtonStyle";
|
||||
NSString* const PopupSettingsExtendBar = @"PopupSettingsExtendBar";
|
||||
NSString* const PopupSettingsHidesBottomBarWhenPushed = @"PopupSettingsHidesBottomBarWhenPushed";
|
||||
|
||||
@interface SettingsTableViewController ()
|
||||
{
|
||||
NSDictionary<NSNumber*, NSString*>* _sectionToKeyMapping;
|
||||
|
||||
IBOutlet UISwitch* _extendBars;
|
||||
IBOutlet UISwitch* _hidesBottomBarWhenPushed;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation SettingsTableViewController
|
||||
|
||||
+ (void)load
|
||||
{
|
||||
[NSUserDefaults.standardUserDefaults registerDefaults:@{PopupSettingsExtendBar: @YES, PopupSettingsHidesBottomBarWhenPushed: @YES}];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
_sectionToKeyMapping = @{
|
||||
@0: PopupSettingsBarStyle,
|
||||
@1: PopupSettingsInteractionStyle,
|
||||
@2: PopupSettingsCloseButtonStyle,
|
||||
@3: PopupSettingsProgressViewStyle,
|
||||
};
|
||||
|
||||
[self _resetSwitchesAnimated:NO];
|
||||
}
|
||||
|
||||
- (void)_resetSwitchesAnimated:(BOOL)animated
|
||||
{
|
||||
[_extendBars setOn:[NSUserDefaults.standardUserDefaults boolForKey:PopupSettingsExtendBar] animated:animated];
|
||||
[_hidesBottomBarWhenPushed setOn:[NSUserDefaults.standardUserDefaults boolForKey:PopupSettingsHidesBottomBarWhenPushed] animated:animated];
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
UITableViewCell* cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
|
||||
|
||||
NSString* key = _sectionToKeyMapping[@(indexPath.section)];
|
||||
if(key != nil)
|
||||
{
|
||||
cell.accessoryType = UITableViewCellAccessoryNone;
|
||||
cell.accessoryView = nil;
|
||||
cell.selectionStyle = UITableViewCellSelectionStyleDefault;
|
||||
|
||||
NSUInteger value = [[NSUserDefaults.standardUserDefaults objectForKey:key] unsignedIntegerValue];
|
||||
if(value == 0xFFFF)
|
||||
{
|
||||
value = [tableView numberOfRowsInSection:indexPath.section] - 1;
|
||||
}
|
||||
|
||||
if(indexPath.row == value)
|
||||
{
|
||||
cell.accessoryType = UITableViewCellAccessoryCheckmark;
|
||||
}
|
||||
}
|
||||
|
||||
return cell;
|
||||
}
|
||||
|
||||
- (IBAction)_resetButtonTapped:(UIBarButtonItem *)sender
|
||||
{
|
||||
[NSUserDefaults.standardUserDefaults setBool:YES forKey:PopupSettingsExtendBar];
|
||||
[NSUserDefaults.standardUserDefaults setBool:YES forKey:PopupSettingsHidesBottomBarWhenPushed];
|
||||
|
||||
[_sectionToKeyMapping enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull key, NSString * _Nonnull obj, BOOL * _Nonnull stop) {
|
||||
[NSUserDefaults.standardUserDefaults setObject:@0 forKey:obj];
|
||||
}];
|
||||
|
||||
[self _resetSwitchesAnimated:YES];
|
||||
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
- (IBAction)_extendBarsSwitchValueDidChange:(UISwitch*)sender
|
||||
{
|
||||
[NSUserDefaults.standardUserDefaults setBool:sender.isOn forKey:PopupSettingsExtendBar];
|
||||
}
|
||||
|
||||
- (IBAction)_hidesBottomBarWhenPushedValueDidChange:(UISwitch*)sender
|
||||
{
|
||||
[NSUserDefaults.standardUserDefaults setBool:sender.isOn forKey:PopupSettingsHidesBottomBarWhenPushed];
|
||||
}
|
||||
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
NSString* key = _sectionToKeyMapping[@(indexPath.section)];
|
||||
|
||||
if(key == nil)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
NSUInteger prevValue = [[NSUserDefaults.standardUserDefaults objectForKey:key] unsignedIntegerValue];
|
||||
if(prevValue == 0xFFFF)
|
||||
{
|
||||
prevValue = [tableView numberOfRowsInSection:indexPath.section] - 1;
|
||||
}
|
||||
|
||||
[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:prevValue inSection:indexPath.section]].accessoryType = UITableViewCellAccessoryNone;
|
||||
[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
|
||||
|
||||
NSUInteger countInSection = [tableView numberOfRowsInSection:indexPath.section];
|
||||
|
||||
NSUInteger value = indexPath.row;
|
||||
if(indexPath.section != 0 && countInSection - 1 == indexPath.row)
|
||||
{
|
||||
value = 0xFFFF;
|
||||
}
|
||||
[NSUserDefaults.standardUserDefaults setObject:@(value) forKey:key];
|
||||
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user