У меня есть UIViewController с контейнером, и у меня есть UIBarButton на панели навигации, и я хочу, чтобы действие кнопки перешло к другому классу класса View1.iOS: кнопка панели управления делегатом для другого класса
Класс для «Embed Segue» Я не показываю, потому что это не нужно.
Когда я нажимаю кнопку, ничего не происходит, даже информация в журнале (NSLog).
Кто-нибудь мне помогает?
У меня есть это:
// ViewController.h
#import <UIKit/UIKit.h>
@protocol changeDelegate <NSObject>
-(void) changeLabel;
@end
@interface ViewController : UIViewController
@property (weak, nonatomic) id <changeDelegate> delegate;
@end
// ViewController.m
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)changeButton:(UIBarButtonItem *)sender {
[self.delegate changeLabel];
}
@end
// Container.h
#import <UIKit/UIKit.h>
@interface Container : UIViewController
@end
// Container.m
#import "Container.h"
@interface Container()
@end
@implementation Container
- (void)viewDidLoad {
[super viewDidLoad];
[self performSegueWithIdentifier:@"segueView1" sender:nil];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
[self addChildViewController:segue.destinationViewController];
[self.view addSubview:((UIViewController *)segue.destinationViewController).view];
}
@end
// View1.h
#import <UIKit/UIKit.h>
@interface View1 : UIViewController <changeDelegate>
@end
// View1.m
#import "View1.h"
@interface View1()
@property (weak, nonatomic) IBOutlet UILabel *labelView1;
@end
@implementation View1
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void) changeLabel {
NSLog(@"Button Action !");
self.labelView1.text = @"Button Action !";
}
@end
Спасибо, JProveta
Вы подключили свой barButton с помощью (IBAction) changeButton через раскадровку? – AzaFromKaza
Привет, Да, метод '- (IBAction) changeButton: (UIBarButtonItem *) отправитель' ti call. Благодарю. – JProveta