Udai kumar Udai kumar - 1 year ago 77
Objective-C Question

How to dismiss KGModel popup using button click

Hello Friends i'm new in iOS application. I used KGModel library to show popup. Its working fine. But i want to know how to dismiss this popup when clicking a button. enter image description here

My code is:-

#import "ViewController.h"
#import "KGModal.h"
#import "CRTableViewCell.h"
@interface ViewController ()

@end

@implementation ViewController
{
NSArray *dataSource;
bool selected;
NSMutableArray *selectedMarks;
UITableView *mytable;
}




- (void)viewDidLoad {
[super viewDidLoad];


dataSource = [NSArray arrayWithObjects:@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", @"Hamburger", @"Ham and Egg Sandwich", @"Creme Brelee", @"White Chocolate Donut", @"Starbucks Coffee", @"Vegetable Curry", @"Instant Noodle with Egg", @"Noodle with BBQ Pork", @"Japanese Noodle with Pork", @"Green Tea", @"Thai Shrimp Cake", @"Angry Birds Cake", @"Ham and Cheese Panini", nil];
selectedMarks = [NSMutableArray new];





CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;







UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screenWidth-50, screenHeight-50)];



UITableView *mytableview = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, screenWidth-50, screenHeight-100)];

mytableview.delegate =self;
mytableview.dataSource=self;

[contentView addSubview:mytableview];


UIButton *save = [[UIButton alloc] initWithFrame:CGRectMake(0, screenHeight-100, screenWidth-50, 50)];
[save setTitle:@"SAVE" forState:UIControlStateNormal];
[save setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[save addTarget:self action:@selector(saveAction:) forControlEvents:UIControlEventTouchUpInside];
[save setBackgroundColor:[UIColor lightGrayColor]];
[contentView addSubview:save];





[[KGModal sharedInstance] showWithContentView:contentView andAnimated:YES];


}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [dataSource count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CRTableViewCellIdentifier = @"cellIdentifier";

// init the CRTableViewCell
CRTableViewCell *cell = (CRTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CRTableViewCellIdentifier];

if (cell == nil) {
cell = [[CRTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CRTableViewCellIdentifier];
}


NSString *text = [dataSource objectAtIndex:[indexPath row]];
cell.textLabel.font = [UIFont systemFontOfSize:12.0];
cell.isSelected = [selectedMarks containsObject:text] ? YES : NO;
cell.textLabel.text = text;
mytable=tableView;
return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath
{
NSString *text = [dataSource objectAtIndex:[indexPath row]];

if ([selectedMarks containsObject:text])// Is selected?
[selectedMarks removeObject:text];
else
[selectedMarks addObject:text];

[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

}
-(void)saveAction:(id)sender{
NSLog(@"%@",sender);
selected = !selected;
NSLog(@"%lu",[dataSource count]);
for(int i=0; i<[dataSource count]; i++){
NSString *text = [dataSource objectAtIndex:i];
if(selected){

[selectedMarks addObject:text];
}else{
[selectedMarks removeObject:text];
}

}
[mytable reloadData];
KGModal *model = [[KGModal alloc]init];
[model hideAnimated:YES withCompletionBlock:nil];
//NSLog(@"%@", selectedMarks);
}


I want to close this popup when clicking the save button.Please help me.

Answer Source

if youwant to close the KGModel using Save button use the following code inside your button action

[KGModal sharedInstance].animateWhenDismissed = YES;

you can see the property in here

// Determines if the modal should dismiss if the user taps outside of the modal view
// Defaults to YES
@property (nonatomic) BOOL tapOutsideToDismiss;

// Determines if the close button or tapping outside the modal should   animate the dismissal
// Defaults to YES
@property (nonatomic) BOOL animateWhenDismissed;

// Determins close button type (None/Left/Right)
// Defaults to Left