Najpierw kawałek kodu z 3 klas.
ViewController.h
ViewController.mKod php:#import <UIKit/UIKit.h>
#import "WorkspaceView.h"
#import "MainMenuView.h"
@interface ViewController : UIViewController
{
WorkspaceView *workspaceView;
MainMenuView *mainMenuView;
}
@property (nonatomic, retain) WorkspaceView *workspaceView;
@property (nonatomic, retain) MainMenuView *mainMenuView;
@end
WorkspaceView.hKod php:#import "ViewController.h"
@implementation ViewController
@synthesize workspaceView;
@synthesize mainMenuView;
#pragma mark - View lifecycle
- (void)viewDidLoad
{
// WorkspaceView
workspaceView = [[WorkspaceView alloc] initWithFrame:CGRectZero];
[self.view addSubview:workspaceView];
// ---
// MainMenuView
mainMenuView = [[MainMenuView alloc] initWithFrame:CGRectZero];
[self.view addSubview:mainMenuView];
// ---
...
}
...
@end
WorkspaceView.mKod php:#import <UIKit/UIKit.h>
@interface WorkspaceView : UIView
@end
MainMenuView.hKod php:#import "WorkspaceView.h"
@implementation WorkspaceView
...
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:self];
//howto execute showMenu or hideMenu from MainMenuView using mainMenuView object in ViewController?
NSLog(@"workspace"); // <-it's work;
}
@end
MainMenuView.mKod php:@interface MainMenuView : UIView
...
-(void)hideMenu;
-(void)showMenu;
@end
Kod php:#import "MainMenuView.h"
@implementation MainMenuView
- (id)initWithFrame:(CGRect)frame{
...
}
-(void)hideMenu{
self.frame = CGRectMake(0, -1 * self.frame.size.height, self.frame.size.width, self.frame.size.height);
}
-(void)showMenu{
self.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
}
@end
Więc, mam 3 klasy, Główna ViewController, oraz klasy 'poboczne' WorkspaceView oraz MainMenuView.
Inicjalizuję obiekty workspaceView oraz mainMenuView w klasie ViewController.
W klasie WorkspaceView wykrywam naciśnięcie obiektu workspaceView i chce wywołać metodę -(void)showMenu klasy MainMenuView. Tyle,że musi się ona odwoływać do stworzonego już przeze mnie obiektu mainMenuView w klasie ViewController (czyli jak kliknę, to obiekt mainMenuView ma zmienić swoje położenie. Dodam, ze sama zmiana działa, tylko problem z wywołaniem). nie mam kompletnego pojęcia jak odwołać się do obiektu mainMenuView.
Proszę o pomoc.
---------- Wpis dodano o 23:51 ---------- Poprzedni wpis dodano o 23:39 ----------
okej, działa.
w funkcji inicjalizującej obiekt mainMenuView nalezy dodać:
w touchesBegan należy dodaćKod php:[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showMenu) name:@"SHOW_MENU" object:nil];
może się komuś przyda ; )Kod php:[[NSNotificationCenter defaultCenter] postNotificationName:@"SHOW_MENU" object:nil];
NSLog(@"workspace"); // <-it's work;




LinkBack URL
About LinkBacks

