Delegate returns nil and not being called
I have an overlay that I want to remove when a button is clicked thereby dismissing the ViewController. I have debugged and the delegate is currently returning nil. I'm not sure what I'm doing wrong here. Have I missed implementing something else? I have even tried out print statements but can't see anything.
protocol DismissOverlayDelegate: class {
func dismissOverlay(_ sender: PlayersViewController)
}
class PlayersViewController: UIViewController {
weak var delegate: DismissOverlayDelegate?
@IBAction func getStartedTapped(_ sender: UIButton) {
self.delegate?.dismissOverlay(self)
}
}
and in my ViewController where I implement the delegate method
class HomeViewController: UIViewController, DismissOverlayDelegate {
@IBOutlet weak var customOverlay: CustomOverlayView!
let playersViewController = PlayersViewController()
override func viewDidLoad() {
super.viewDidLoad()
self.playersViewController.delegate = self
}
func dismissOverlay(_ sender: PlayersViewController) {
self.customOverlay.removeFromView()
}
}
delegate = (DismissOverlayDelegate?) nil
The PlayersViewController is embedded into a UIPageViewController
class HomeViewController: UIPageViewController, UIPageViewControllerDataSource {
var pages = [UIViewController]()
override func viewDidLoad() {
super.viewDidLoad()
for storyboardIDs in ["playersVC1","playersVC2"] {
let viewController = self.storyboard?.instantiateViewController(withIdentifier: storyboardIDs)
self.pages.append(viewController!)
}
self.dataSource = self
self.setViewControllers([self.pages.first!], direction: .forward, animated: true)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
let currentIndex = self.pages.firstIndex(of: viewController)!
if currentIndex > 0 {
return self.pages[currentIndex - 1]
}
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let currentIndex = self.pages.firstIndex(of: viewController)!
if currentIndex < (self.pages.count - 1) {
return self.pages[currentIndex + 1]
}
return nil
}
}
ios swift delegates overlay delegation
|
show 3 more comments
I have an overlay that I want to remove when a button is clicked thereby dismissing the ViewController. I have debugged and the delegate is currently returning nil. I'm not sure what I'm doing wrong here. Have I missed implementing something else? I have even tried out print statements but can't see anything.
protocol DismissOverlayDelegate: class {
func dismissOverlay(_ sender: PlayersViewController)
}
class PlayersViewController: UIViewController {
weak var delegate: DismissOverlayDelegate?
@IBAction func getStartedTapped(_ sender: UIButton) {
self.delegate?.dismissOverlay(self)
}
}
and in my ViewController where I implement the delegate method
class HomeViewController: UIViewController, DismissOverlayDelegate {
@IBOutlet weak var customOverlay: CustomOverlayView!
let playersViewController = PlayersViewController()
override func viewDidLoad() {
super.viewDidLoad()
self.playersViewController.delegate = self
}
func dismissOverlay(_ sender: PlayersViewController) {
self.customOverlay.removeFromView()
}
}
delegate = (DismissOverlayDelegate?) nil
The PlayersViewController is embedded into a UIPageViewController
class HomeViewController: UIPageViewController, UIPageViewControllerDataSource {
var pages = [UIViewController]()
override func viewDidLoad() {
super.viewDidLoad()
for storyboardIDs in ["playersVC1","playersVC2"] {
let viewController = self.storyboard?.instantiateViewController(withIdentifier: storyboardIDs)
self.pages.append(viewController!)
}
self.dataSource = self
self.setViewControllers([self.pages.first!], direction: .forward, animated: true)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
let currentIndex = self.pages.firstIndex(of: viewController)!
if currentIndex > 0 {
return self.pages[currentIndex - 1]
}
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let currentIndex = self.pages.firstIndex(of: viewController)!
if currentIndex < (self.pages.count - 1) {
return self.pages[currentIndex + 1]
}
return nil
}
}
ios swift delegates overlay delegation
your instanceplayersViewControlleris not the instance that is on-screen, you need to get hold of the actual instance in the view controller stack. You cannot just create an instance usingPlayersViewController().
– luk2302
Nov 23 '18 at 12:06
how are you usingplayersViewControllerfurther in your code?
– hardik parmar
Nov 23 '18 at 12:07
Its just a helpviewControllerthat I want to get rid of when button is pressed. Remove it from thesuperView
– mandem112
Nov 23 '18 at 12:14
1
how you are adding theplayersViewController? show that code to us.
– hardik parmar
Nov 23 '18 at 12:21
Its embedded in aUIPageViewController
– mandem112
Nov 23 '18 at 12:25
|
show 3 more comments
I have an overlay that I want to remove when a button is clicked thereby dismissing the ViewController. I have debugged and the delegate is currently returning nil. I'm not sure what I'm doing wrong here. Have I missed implementing something else? I have even tried out print statements but can't see anything.
protocol DismissOverlayDelegate: class {
func dismissOverlay(_ sender: PlayersViewController)
}
class PlayersViewController: UIViewController {
weak var delegate: DismissOverlayDelegate?
@IBAction func getStartedTapped(_ sender: UIButton) {
self.delegate?.dismissOverlay(self)
}
}
and in my ViewController where I implement the delegate method
class HomeViewController: UIViewController, DismissOverlayDelegate {
@IBOutlet weak var customOverlay: CustomOverlayView!
let playersViewController = PlayersViewController()
override func viewDidLoad() {
super.viewDidLoad()
self.playersViewController.delegate = self
}
func dismissOverlay(_ sender: PlayersViewController) {
self.customOverlay.removeFromView()
}
}
delegate = (DismissOverlayDelegate?) nil
The PlayersViewController is embedded into a UIPageViewController
class HomeViewController: UIPageViewController, UIPageViewControllerDataSource {
var pages = [UIViewController]()
override func viewDidLoad() {
super.viewDidLoad()
for storyboardIDs in ["playersVC1","playersVC2"] {
let viewController = self.storyboard?.instantiateViewController(withIdentifier: storyboardIDs)
self.pages.append(viewController!)
}
self.dataSource = self
self.setViewControllers([self.pages.first!], direction: .forward, animated: true)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
let currentIndex = self.pages.firstIndex(of: viewController)!
if currentIndex > 0 {
return self.pages[currentIndex - 1]
}
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let currentIndex = self.pages.firstIndex(of: viewController)!
if currentIndex < (self.pages.count - 1) {
return self.pages[currentIndex + 1]
}
return nil
}
}
ios swift delegates overlay delegation
I have an overlay that I want to remove when a button is clicked thereby dismissing the ViewController. I have debugged and the delegate is currently returning nil. I'm not sure what I'm doing wrong here. Have I missed implementing something else? I have even tried out print statements but can't see anything.
protocol DismissOverlayDelegate: class {
func dismissOverlay(_ sender: PlayersViewController)
}
class PlayersViewController: UIViewController {
weak var delegate: DismissOverlayDelegate?
@IBAction func getStartedTapped(_ sender: UIButton) {
self.delegate?.dismissOverlay(self)
}
}
and in my ViewController where I implement the delegate method
class HomeViewController: UIViewController, DismissOverlayDelegate {
@IBOutlet weak var customOverlay: CustomOverlayView!
let playersViewController = PlayersViewController()
override func viewDidLoad() {
super.viewDidLoad()
self.playersViewController.delegate = self
}
func dismissOverlay(_ sender: PlayersViewController) {
self.customOverlay.removeFromView()
}
}
delegate = (DismissOverlayDelegate?) nil
The PlayersViewController is embedded into a UIPageViewController
class HomeViewController: UIPageViewController, UIPageViewControllerDataSource {
var pages = [UIViewController]()
override func viewDidLoad() {
super.viewDidLoad()
for storyboardIDs in ["playersVC1","playersVC2"] {
let viewController = self.storyboard?.instantiateViewController(withIdentifier: storyboardIDs)
self.pages.append(viewController!)
}
self.dataSource = self
self.setViewControllers([self.pages.first!], direction: .forward, animated: true)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
let currentIndex = self.pages.firstIndex(of: viewController)!
if currentIndex > 0 {
return self.pages[currentIndex - 1]
}
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let currentIndex = self.pages.firstIndex(of: viewController)!
if currentIndex < (self.pages.count - 1) {
return self.pages[currentIndex + 1]
}
return nil
}
}
ios swift delegates overlay delegation
ios swift delegates overlay delegation
edited Nov 23 '18 at 12:47
mandem112
asked Nov 23 '18 at 12:01
mandem112mandem112
818
818
your instanceplayersViewControlleris not the instance that is on-screen, you need to get hold of the actual instance in the view controller stack. You cannot just create an instance usingPlayersViewController().
– luk2302
Nov 23 '18 at 12:06
how are you usingplayersViewControllerfurther in your code?
– hardik parmar
Nov 23 '18 at 12:07
Its just a helpviewControllerthat I want to get rid of when button is pressed. Remove it from thesuperView
– mandem112
Nov 23 '18 at 12:14
1
how you are adding theplayersViewController? show that code to us.
– hardik parmar
Nov 23 '18 at 12:21
Its embedded in aUIPageViewController
– mandem112
Nov 23 '18 at 12:25
|
show 3 more comments
your instanceplayersViewControlleris not the instance that is on-screen, you need to get hold of the actual instance in the view controller stack. You cannot just create an instance usingPlayersViewController().
– luk2302
Nov 23 '18 at 12:06
how are you usingplayersViewControllerfurther in your code?
– hardik parmar
Nov 23 '18 at 12:07
Its just a helpviewControllerthat I want to get rid of when button is pressed. Remove it from thesuperView
– mandem112
Nov 23 '18 at 12:14
1
how you are adding theplayersViewController? show that code to us.
– hardik parmar
Nov 23 '18 at 12:21
Its embedded in aUIPageViewController
– mandem112
Nov 23 '18 at 12:25
your instance
playersViewController is not the instance that is on-screen, you need to get hold of the actual instance in the view controller stack. You cannot just create an instance using PlayersViewController().– luk2302
Nov 23 '18 at 12:06
your instance
playersViewController is not the instance that is on-screen, you need to get hold of the actual instance in the view controller stack. You cannot just create an instance using PlayersViewController().– luk2302
Nov 23 '18 at 12:06
how are you using
playersViewController further in your code?– hardik parmar
Nov 23 '18 at 12:07
how are you using
playersViewController further in your code?– hardik parmar
Nov 23 '18 at 12:07
Its just a help
viewController that I want to get rid of when button is pressed. Remove it from the superView– mandem112
Nov 23 '18 at 12:14
Its just a help
viewController that I want to get rid of when button is pressed. Remove it from the superView– mandem112
Nov 23 '18 at 12:14
1
1
how you are adding the
playersViewController? show that code to us.– hardik parmar
Nov 23 '18 at 12:21
how you are adding the
playersViewController? show that code to us.– hardik parmar
Nov 23 '18 at 12:21
Its embedded in a
UIPageViewController– mandem112
Nov 23 '18 at 12:25
Its embedded in a
UIPageViewController– mandem112
Nov 23 '18 at 12:25
|
show 3 more comments
2 Answers
2
active
oldest
votes
It seems that PlayersViewController() is wrong.
You should use instantiateInitialViewController() or instantiateInitialViewController() when using StoryBoard.
https://developer.apple.com/documentation/uikit/uistoryboard/1616214-instantiateviewcontroller
https://developer.apple.com/documentation/uikit/uistoryboard/1616213-instantiateinitialviewcontroller
This works but it just presents theHomeViewCotrolleron top which is what I don't what. I just wanna press the button to make theoverlayjust disappear without presenting anotherviewController
– mandem112
Nov 23 '18 at 12:30
add a comment |
Let me explain you if you are using or want to use delegate for call or implement something there is root and you have to that on a right way. You are doing well no issue but the implementation of delegate is not properly your method can't accept that so try this:-
Your Home View Controller
class HomeViewController: UIViewController, DismissOverlayDelegate {
@IBOutlet weak var customOverlay: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
func dismissOverlay(_ sender: PlayersViewController) {
self.customOverlay.removeFromSuperview()
}
@IBAction func go(_ sender: UIButton) {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "PlayersViewController") as! PlayersViewController
vc.delegate = self
self.navigationController?.pushViewController(vc, animated: true);
}
}
this is your playground VC
protocol DismissOverlayDelegate: class {
func dismissOverlay(_ sender: PlayersViewController)
}
class PlayersViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
weak var delegate: DismissOverlayDelegate?
@IBAction func getStartedTapped(_ sender: UIButton) {
self.delegate?.dismissOverlay(self)
}
}
now hope you understand what you have to do...!
this looks great, but where would I use the@IBAction func go(_ sender: UIButton) {}. I understand instantiating it but I don't have the button go button in theHomeViewController
– mandem112
Nov 23 '18 at 12:51
seems you edited your question
– Naveen Yadav
Nov 23 '18 at 12:58
yeah I did by adding it the code that embeds the vcs into aUIPageViewController
– mandem112
Nov 23 '18 at 12:59
can you explain exactly what you want
– Naveen Yadav
Nov 23 '18 at 13:05
I have aUIBarbuttonItemthat shows theseviewControllersas help pages in an overlay. I have abuttonon the on the lastviewControllerthat I want to tap to remove it the overlay hence removing it from thesuperview
– mandem112
Nov 23 '18 at 13:07
|
show 1 more comment
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53446362%2fdelegate-returns-nil-and-not-being-called%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
It seems that PlayersViewController() is wrong.
You should use instantiateInitialViewController() or instantiateInitialViewController() when using StoryBoard.
https://developer.apple.com/documentation/uikit/uistoryboard/1616214-instantiateviewcontroller
https://developer.apple.com/documentation/uikit/uistoryboard/1616213-instantiateinitialviewcontroller
This works but it just presents theHomeViewCotrolleron top which is what I don't what. I just wanna press the button to make theoverlayjust disappear without presenting anotherviewController
– mandem112
Nov 23 '18 at 12:30
add a comment |
It seems that PlayersViewController() is wrong.
You should use instantiateInitialViewController() or instantiateInitialViewController() when using StoryBoard.
https://developer.apple.com/documentation/uikit/uistoryboard/1616214-instantiateviewcontroller
https://developer.apple.com/documentation/uikit/uistoryboard/1616213-instantiateinitialviewcontroller
This works but it just presents theHomeViewCotrolleron top which is what I don't what. I just wanna press the button to make theoverlayjust disappear without presenting anotherviewController
– mandem112
Nov 23 '18 at 12:30
add a comment |
It seems that PlayersViewController() is wrong.
You should use instantiateInitialViewController() or instantiateInitialViewController() when using StoryBoard.
https://developer.apple.com/documentation/uikit/uistoryboard/1616214-instantiateviewcontroller
https://developer.apple.com/documentation/uikit/uistoryboard/1616213-instantiateinitialviewcontroller
It seems that PlayersViewController() is wrong.
You should use instantiateInitialViewController() or instantiateInitialViewController() when using StoryBoard.
https://developer.apple.com/documentation/uikit/uistoryboard/1616214-instantiateviewcontroller
https://developer.apple.com/documentation/uikit/uistoryboard/1616213-instantiateinitialviewcontroller
answered Nov 23 '18 at 12:21
Shota NakagamiShota Nakagami
32448
32448
This works but it just presents theHomeViewCotrolleron top which is what I don't what. I just wanna press the button to make theoverlayjust disappear without presenting anotherviewController
– mandem112
Nov 23 '18 at 12:30
add a comment |
This works but it just presents theHomeViewCotrolleron top which is what I don't what. I just wanna press the button to make theoverlayjust disappear without presenting anotherviewController
– mandem112
Nov 23 '18 at 12:30
This works but it just presents the
HomeViewCotroller on top which is what I don't what. I just wanna press the button to make the overlay just disappear without presenting another viewController– mandem112
Nov 23 '18 at 12:30
This works but it just presents the
HomeViewCotroller on top which is what I don't what. I just wanna press the button to make the overlay just disappear without presenting another viewController– mandem112
Nov 23 '18 at 12:30
add a comment |
Let me explain you if you are using or want to use delegate for call or implement something there is root and you have to that on a right way. You are doing well no issue but the implementation of delegate is not properly your method can't accept that so try this:-
Your Home View Controller
class HomeViewController: UIViewController, DismissOverlayDelegate {
@IBOutlet weak var customOverlay: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
func dismissOverlay(_ sender: PlayersViewController) {
self.customOverlay.removeFromSuperview()
}
@IBAction func go(_ sender: UIButton) {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "PlayersViewController") as! PlayersViewController
vc.delegate = self
self.navigationController?.pushViewController(vc, animated: true);
}
}
this is your playground VC
protocol DismissOverlayDelegate: class {
func dismissOverlay(_ sender: PlayersViewController)
}
class PlayersViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
weak var delegate: DismissOverlayDelegate?
@IBAction func getStartedTapped(_ sender: UIButton) {
self.delegate?.dismissOverlay(self)
}
}
now hope you understand what you have to do...!
this looks great, but where would I use the@IBAction func go(_ sender: UIButton) {}. I understand instantiating it but I don't have the button go button in theHomeViewController
– mandem112
Nov 23 '18 at 12:51
seems you edited your question
– Naveen Yadav
Nov 23 '18 at 12:58
yeah I did by adding it the code that embeds the vcs into aUIPageViewController
– mandem112
Nov 23 '18 at 12:59
can you explain exactly what you want
– Naveen Yadav
Nov 23 '18 at 13:05
I have aUIBarbuttonItemthat shows theseviewControllersas help pages in an overlay. I have abuttonon the on the lastviewControllerthat I want to tap to remove it the overlay hence removing it from thesuperview
– mandem112
Nov 23 '18 at 13:07
|
show 1 more comment
Let me explain you if you are using or want to use delegate for call or implement something there is root and you have to that on a right way. You are doing well no issue but the implementation of delegate is not properly your method can't accept that so try this:-
Your Home View Controller
class HomeViewController: UIViewController, DismissOverlayDelegate {
@IBOutlet weak var customOverlay: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
func dismissOverlay(_ sender: PlayersViewController) {
self.customOverlay.removeFromSuperview()
}
@IBAction func go(_ sender: UIButton) {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "PlayersViewController") as! PlayersViewController
vc.delegate = self
self.navigationController?.pushViewController(vc, animated: true);
}
}
this is your playground VC
protocol DismissOverlayDelegate: class {
func dismissOverlay(_ sender: PlayersViewController)
}
class PlayersViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
weak var delegate: DismissOverlayDelegate?
@IBAction func getStartedTapped(_ sender: UIButton) {
self.delegate?.dismissOverlay(self)
}
}
now hope you understand what you have to do...!
this looks great, but where would I use the@IBAction func go(_ sender: UIButton) {}. I understand instantiating it but I don't have the button go button in theHomeViewController
– mandem112
Nov 23 '18 at 12:51
seems you edited your question
– Naveen Yadav
Nov 23 '18 at 12:58
yeah I did by adding it the code that embeds the vcs into aUIPageViewController
– mandem112
Nov 23 '18 at 12:59
can you explain exactly what you want
– Naveen Yadav
Nov 23 '18 at 13:05
I have aUIBarbuttonItemthat shows theseviewControllersas help pages in an overlay. I have abuttonon the on the lastviewControllerthat I want to tap to remove it the overlay hence removing it from thesuperview
– mandem112
Nov 23 '18 at 13:07
|
show 1 more comment
Let me explain you if you are using or want to use delegate for call or implement something there is root and you have to that on a right way. You are doing well no issue but the implementation of delegate is not properly your method can't accept that so try this:-
Your Home View Controller
class HomeViewController: UIViewController, DismissOverlayDelegate {
@IBOutlet weak var customOverlay: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
func dismissOverlay(_ sender: PlayersViewController) {
self.customOverlay.removeFromSuperview()
}
@IBAction func go(_ sender: UIButton) {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "PlayersViewController") as! PlayersViewController
vc.delegate = self
self.navigationController?.pushViewController(vc, animated: true);
}
}
this is your playground VC
protocol DismissOverlayDelegate: class {
func dismissOverlay(_ sender: PlayersViewController)
}
class PlayersViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
weak var delegate: DismissOverlayDelegate?
@IBAction func getStartedTapped(_ sender: UIButton) {
self.delegate?.dismissOverlay(self)
}
}
now hope you understand what you have to do...!
Let me explain you if you are using or want to use delegate for call or implement something there is root and you have to that on a right way. You are doing well no issue but the implementation of delegate is not properly your method can't accept that so try this:-
Your Home View Controller
class HomeViewController: UIViewController, DismissOverlayDelegate {
@IBOutlet weak var customOverlay: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
func dismissOverlay(_ sender: PlayersViewController) {
self.customOverlay.removeFromSuperview()
}
@IBAction func go(_ sender: UIButton) {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "PlayersViewController") as! PlayersViewController
vc.delegate = self
self.navigationController?.pushViewController(vc, animated: true);
}
}
this is your playground VC
protocol DismissOverlayDelegate: class {
func dismissOverlay(_ sender: PlayersViewController)
}
class PlayersViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
weak var delegate: DismissOverlayDelegate?
@IBAction func getStartedTapped(_ sender: UIButton) {
self.delegate?.dismissOverlay(self)
}
}
now hope you understand what you have to do...!
answered Nov 23 '18 at 12:46
Naveen YadavNaveen Yadav
5318
5318
this looks great, but where would I use the@IBAction func go(_ sender: UIButton) {}. I understand instantiating it but I don't have the button go button in theHomeViewController
– mandem112
Nov 23 '18 at 12:51
seems you edited your question
– Naveen Yadav
Nov 23 '18 at 12:58
yeah I did by adding it the code that embeds the vcs into aUIPageViewController
– mandem112
Nov 23 '18 at 12:59
can you explain exactly what you want
– Naveen Yadav
Nov 23 '18 at 13:05
I have aUIBarbuttonItemthat shows theseviewControllersas help pages in an overlay. I have abuttonon the on the lastviewControllerthat I want to tap to remove it the overlay hence removing it from thesuperview
– mandem112
Nov 23 '18 at 13:07
|
show 1 more comment
this looks great, but where would I use the@IBAction func go(_ sender: UIButton) {}. I understand instantiating it but I don't have the button go button in theHomeViewController
– mandem112
Nov 23 '18 at 12:51
seems you edited your question
– Naveen Yadav
Nov 23 '18 at 12:58
yeah I did by adding it the code that embeds the vcs into aUIPageViewController
– mandem112
Nov 23 '18 at 12:59
can you explain exactly what you want
– Naveen Yadav
Nov 23 '18 at 13:05
I have aUIBarbuttonItemthat shows theseviewControllersas help pages in an overlay. I have abuttonon the on the lastviewControllerthat I want to tap to remove it the overlay hence removing it from thesuperview
– mandem112
Nov 23 '18 at 13:07
this looks great, but where would I use the
@IBAction func go(_ sender: UIButton) {}. I understand instantiating it but I don't have the button go button in the HomeViewController– mandem112
Nov 23 '18 at 12:51
this looks great, but where would I use the
@IBAction func go(_ sender: UIButton) {}. I understand instantiating it but I don't have the button go button in the HomeViewController– mandem112
Nov 23 '18 at 12:51
seems you edited your question
– Naveen Yadav
Nov 23 '18 at 12:58
seems you edited your question
– Naveen Yadav
Nov 23 '18 at 12:58
yeah I did by adding it the code that embeds the vcs into a
UIPageViewController– mandem112
Nov 23 '18 at 12:59
yeah I did by adding it the code that embeds the vcs into a
UIPageViewController– mandem112
Nov 23 '18 at 12:59
can you explain exactly what you want
– Naveen Yadav
Nov 23 '18 at 13:05
can you explain exactly what you want
– Naveen Yadav
Nov 23 '18 at 13:05
I have a
UIBarbuttonItem that shows these viewControllers as help pages in an overlay. I have a button on the on the last viewController that I want to tap to remove it the overlay hence removing it from the superview– mandem112
Nov 23 '18 at 13:07
I have a
UIBarbuttonItem that shows these viewControllers as help pages in an overlay. I have a button on the on the last viewController that I want to tap to remove it the overlay hence removing it from the superview– mandem112
Nov 23 '18 at 13:07
|
show 1 more comment
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53446362%2fdelegate-returns-nil-and-not-being-called%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown

your instance
playersViewControlleris not the instance that is on-screen, you need to get hold of the actual instance in the view controller stack. You cannot just create an instance usingPlayersViewController().– luk2302
Nov 23 '18 at 12:06
how are you using
playersViewControllerfurther in your code?– hardik parmar
Nov 23 '18 at 12:07
Its just a help
viewControllerthat I want to get rid of when button is pressed. Remove it from thesuperView– mandem112
Nov 23 '18 at 12:14
1
how you are adding the
playersViewController? show that code to us.– hardik parmar
Nov 23 '18 at 12:21
Its embedded in a
UIPageViewController– mandem112
Nov 23 '18 at 12:25