iOSDeveloper
iOSDeveloper

Reputation: 461

Pop up not Dismissing when i click button in logout

I am using pop over button to Signout a page back to Root view controller. i successfully came back to root view controller but pop up not dismissing. It stays on the Root view controller Here is my code

POPOVERVIEW CONTROLLER.H

@protocol MJSecondPopupDelegate;


#import <UIKit/UIKit.h>
#import "LoginViewController.h"
#import "TimeTableViewController.h"
@class TimeTableViewController;
@interface PopOverViewController : UIViewController <UIPopoverControllerDelegate>
{

//  UIPopoverController *popoverController;

}
@property (assign, nonatomic) id <MJSecondPopupDelegate>delegate;//ede ga
@property(strong,nonatomic) UIPopoverController *popoverController;
@property(nonatomic,strong)TimeTableViewController *TimeObj;
-(IBAction)logOut:(UIButton *)sender;
@end


@protocol MJSecondPopupDelegate<NSObject>
@optional
- (void)cancelButtonClicked:(PopOverViewController*)secondDetailViewController;
@end


POPOVERVIEW CONTROLLER.M

#import "PopOverViewController.h"

@interface PopOverViewController ()

@end

@implementation PopOverViewController
@synthesize delegate,TimeObj,popoverController;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
-(void)SignOut{
    NSLog(@"protocol");
}
- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"delegate value is %@",self.delegate);

    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
-(IBAction)logOut:(UIButton *)sender{
    if (self.delegate && [self.delegate respondsToSelector:@selector(cancelButtonClicked:)])
    {
        [self.delegate cancelButtonClicked:self];
        [self.popoverController dismissPopoverAnimated:YES];

    }
    }


MAINVIEW CONTROLLER.H


#import <UIKit/UIKit.h>

#import "NotesandReminders.h"
#import "Cell.h"
#import "SWRevealViewController.h"
#import "AvailableSessionViewController.h"
#import "ServiceConnector.h"
#import "AppDelegate.h"
#import "PopOverViewController.h"
#import "UIViewController+MJPopupViewController.h"


@class NotesandReminders;
@class PopOverViewController;
@protocol Popupprotocol <NSObject>

@optional
-(void)SignOut;

@end
@interface TimeTableViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate,MJSecondPopupDelegate>{

}


MAINVIEWCONTROLLER.M

#import "AvailableSessionViewController.h"

@interface TimeTableViewController ()
@end

@implementation TimeTableViewController
@synthesize pc,myCounterLabel,cancelSessionButtonOutlet,userButtonOutlet,saveButtonOutlet,timerr,collectionData,cancelSession,jsonData,secondviewcontroller,popoverController;

@synthesize startWeek,endWeek,startDateLabel,endDateLabel,todaysDate,startDate,endDate,dateForMatching,startDateToCall,endDateToCall;
@synthesize blueBarOutlet;
BOOL isLongPressed ;
int hours, minutes, seconds;
int secondsLeft;
int valueForBlueBar;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

// This method runs first when the screen is displayed
- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"POPSegue"]) {
        PopOverViewController* userViewController = [segue destinationViewController];
        userViewController.delegate=self;

    }
}

AFTER LOG OUT IN ROOT VIEW CONTROLLER

I am creating Pop over just by cntrl drag to the view controller and selecting PopOver modally

enter image description here

Upvotes: 0

Views: 389

Answers (2)

iOSDeveloper
iOSDeveloper

Reputation: 461

This is how i managed to get rid of it

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
   if ([[segue identifier] isEqualToString:@"POPSegue"]) {

       // settings popover is the global variable for  --> UIPopoverController *settingsPopOver;

       settingsPopOver = [(UIStoryboardPopoverSegue *)segue popoverController];
       _secondviewcontroller = (PopOverViewController *)settingsPopOver.contentViewController;
       _secondviewcontroller.delegate = self;


   }
}

Upvotes: 0

meda
meda

Reputation: 45490

After the following line:

[self.popoverController dismissPopoverAnimated:YES];

add

[self.popoverController.contentViewController.navigationController                 
                                              popToRootViewControllerAnimated:YES];

Upvotes: 1

Related Questions