Odpowiedz na ten temat
Pokaż wyniki od 1 do 2 z 2
  1. Avatar tmkszlc
    Dołączył
    Sep 2008
    Skąd
    Koszalin
    Postów
    947

    Cytuj | #1

    Najpierw kawałek kodu z 3 klas.
    ViewController.h
    Kod php:
    #import <UIKit/UIKit.h>
    #import "WorkspaceView.h"
    #import "MainMenuView.h"

    @interface ViewController UIViewController
    {
    WorkspaceView *workspaceView;
    MainMenuView *mainMenuView;
    }
    @
    property (nonatomicretainWorkspaceView *workspaceView;
    @
    property (nonatomicretainMainMenuView *mainMenuView;
    @
    end 
    ViewController.m
    Kod php:
    #import "ViewController.h"

    @implementation ViewController

    @synthesize workspaceView;
    @
    synthesize mainMenuView;

    #pragma mark - View lifecycle

    - (void)viewDidLoad
    {

    // WorkspaceView
    workspaceView = [[WorkspaceView allocinitWithFrame:CGRectZero];
    [
    self.view addSubview:workspaceView];
    // ---

    // MainMenuView
    mainMenuView = [[MainMenuView allocinitWithFrame:CGRectZero];
    [
    self.view addSubview:mainMenuView];
    // ---
    ...
    }
    ...
    @
    end 
    WorkspaceView.h
    Kod php:
    #import <UIKit/UIKit.h>
    @interface WorkspaceView UIView
    @end 
    WorkspaceView.m
    Kod 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.h
    Kod php:
    @interface MainMenuView UIView
    ...
    -(
    void)hideMenu;
    -(
    void)showMenu;

    @
    end 
    MainMenuView.m
    Kod php:
    #import "MainMenuView.h"

    @implementation MainMenuView

    - (id)initWithFrame:(CGRect)frame{
    ...
    }


    -(
    void)hideMenu{
    self.frame CGRectMake(0, -self.frame.size.heightself.frame.size.widthself.frame.size.height);
    }

    -(
    void)showMenu{
    self.frame CGRectMake(00self.frame.size.widthself.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ć:
    Kod php:
    [[NSNotificationCenter defaultCenteraddObserver:self  selector:@selector(showMenuname:@"SHOW_MENU" object:nil]; 
    w touchesBegan należy dodać
    Kod php:
        [[NSNotificationCenter defaultCenterpostNotificationName:@"SHOW_MENU" object:nil];
        
    NSLog(@"workspace"); // <-it's work; 
    może się komuś przyda ; )
    Ostatnio edytowane przez wojtkow ; 13.12.2011 o 20:47 Powód: code -> php dla większej czytelności
    Komputer: MacBook Pro 17 2010 i7 Matt
    Telefon: iPhone 3G 16GB
    Odtwarzacz: iPhone 3G 16GB
    Tablet: The new iPad 32GB WiFi + 4G
    


  2. Avatar zbiju
    Dołączył
    Jul 2009
    Postów
    32

    Cytuj | #2

    trochę inaczej podszedłbym do problemu, mianowicie nie implementował własnoręcznie metod "touchesBegan" i reszty z tego zestawu,
    skoro już chcesz mieć aktywny cały widok, to można skorzystać z UITapGestureRecognizer, którego instancję dodaje się do widoku właśnie
    Komputer: MBP 15", i7 2.66GHz, 8GB RAM, 256GB SSD
    Telefon: iPhone 4S
    Tablet: iPad1 + iPad2
    WWW: http://www.touchingit.com
    Marcin Zbijowski

Odpowiedz na ten temat