Вызовите метод в супер из дочернего popupviewcontroller - PullRequest
1 голос
/ 30 ноября 2011

Мне нужно вызвать метод в viewcontroller, который создает popupviewcontroller, из созданного popupviewcontroller.

Для iPad я создаю его так:

if (!self.flipsidePopoverController) {
    FlipsideViewController *controller = [[[FlipsideViewController alloc] initWithNibName:@"FlipsideViewController" bundle:nil] autorelease];
    controller.delegate = self;
    self.flipsidePopoverController = [[[UIPopoverController alloc] initWithContentViewController:controller] autorelease];
}
if ([self.flipsidePopoverController isPopoverVisible]) {
    [self.flipsidePopoverController dismissPopoverAnimated:YES];
}
else
{
    /// The important part ///
    [self.flipsidePopoverController presentPopoverFromRect:CGRectMake((self.view.frame.size.width-320), 0, (self.view.frame.size.width), 10) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}

Теперь я хочу вызватьметод в моем главном контроллере представления из всплывающего окна.Как мне этого добиться?


Мой iPhone-эквивалент такой:

// Creating it //
FlipsideViewController *controller = [[[FlipsideViewController alloc] initWithNibName:@"FlipsideViewController" bundle:nil] autorelease];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];

Вызов метода из всплывающего окна:

if ([self.presentingViewController isKindOfClass:[MainViewController class]])
    [(MainViewController*)self.presentingViewController resetClock];

Ответы [ 2 ]

0 голосов
/ 05 мая 2012

.h

#import <UIKit/UIKit>
#import AppDelegate.h"

@interface FlipsideViewController : UIViewController
{
}

@property (nonatomic, assign) MainViewController *mainController;

@end

.m

#import "FlipsideViewController.h"
#import "MainViewController.h"

@interface FlipsideViewController ()

@end

@implementation FlipsideViewController

@synthesize mainController = _mainController;

// methods

@end
0 голосов
/ 30 ноября 2011

Дайте отображаемому контроллеру вида ссылку на ваш основной контроллер вида.Например:

@class MainViewController;
@interface FlipsideViewController : UIViewController
{
}

@property (nonatomic, assign) MainViewController *mainController;

@end

(Не забывайте @synthesize в реализации!) Позже, когда вы представите popover, просто установите свойство:

[controller setMainController:self];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...