У меня есть два контроллера представления, используемых в контроллере панели вкладок: FirstViewController и SecondViewController. Я пытаюсь вызвать метод в SecondViewController из FirstViewController, но сделать это до загрузки SecondViewController, выбрав вторую вкладку. Это возможно? Я пробовал уведомления и делегаты и, похоже, не могу заставить его работать, если я не выберу SecondViewController и сначала не запусту ViewDidLoad, а затем вызову его из FirstViewController.
Это в target-c, и я пытаюсь вызвать setAutoModeTimer () в SecondViewController.
Вот мой код:
FirstViewController.h
#import <UIKit/UIKit.h>
@protocol FirstViewControllerDelegate <NSObject>
- (void) setAutoModeTimer;
@end
@interface FirstViewController : UIViewController
@property (nonatomic,weak) id <FirstViewControllerDelegate> delegate;
@end
FirstViewController.m
#import "FirstViewController.h"
#import "SecondViewController.h"
@interface FirstViewController ()
@end
@implementation FirstViewController
- (void)viewDidLoad {
[super viewDidLoad];
SecondViewController * myViewController = [[SecondViewController alloc] init];
[myViewController view];
// Do any additional setup after loading the view, typically from a nib.
}
//- (void)loadView{[self.tabBarController.viewControllers makeObjectsPerformSelector:@selector(view)];}
- (IBAction)startTimerButtonPressed:(id)sender {
[self.delegate setAutoModeTimer];
}
@end
SecondViewController.h
#import <UIKit/UIKit.h>
@interface SecondViewController : UIViewController
@end
SecondViewController.m
#import "SecondViewController.h"
#import "FirstViewController.h"
@interface SecondViewController () <FirstViewControllerDelegate>
@end
@implementation SecondViewController
- (void)viewDidLoad {
[super viewDidLoad];
FirstViewController *firstVC = [self.storyboard instantiateViewControllerWithIdentifier:@"FirstViewController"];
firstVC.delegate = self;
}
- (void) setAutoModeTimer
{
NSLog(@"Timer has started");
}
@end