2012-06-11 3 views
0

У меня есть некоторые методы экземпляра, реализованные в классе для выполнения 2D-рисования; и изображение отображается в представлении, объявленном в моем paintViewController.IOS - вызов метода экземпляра класса из другой кнопки класса

Эти методы (например, clearImage, changeBrushColor) полностью работают, если я вызываю их из созданных кодом кнопок внутри одного класса.

но то, что я хочу, чтобы использовать UIKit сделать все графики, кнопки ЕСС и просто пустой взгляд рисовать в.

я пробовал несколько способов для вызова метода экземпляра из других классов, но ни один из они, кажется, работают ..

может кто-нибудь объяснить мне шаг за шагом, как это сделать?

Эти способы я уже пробовали:

  1. в PaintViewController.m я #import "Paint.h" затем вызвать метод стирания, как этот

    - (IBAction)eraseButton:(id)sender { 
    
        Paint *newInstance = [[Paint alloc]init]; 
        [newInstance clearImage]; 
    } 
    

    оно как метод вызывается, но не работает. (если я поставил NSLog внутри метода, который он печатает)

  2. i @class Paint внутри моего PaintViewController.h, установите свойство в интерфейсе, как @property (strong, nonatomic) Paint *paint; и внутри IBAction я пишу [self.class clearImage];

это не работает вообще.

+1

Вы имеете в виду '[self.paint clearImage]'? –

+0

Каков ваш объект Paint? Это взгляд на ваш viewController? И каков код вашего метода clearImage? – Morion

+0

да, конечно. извините – Dodgson86

ответ

0

Если я правильно прочитал ваш вопрос, вам нужно реализовать метод делегата. Это обычно используется в Objective-C в этом сценарии. У меня есть аналогичный ответ с примером кода в сообщении this SO.

+0

Я пробовал свой путь к делегату и не работал ... Позвольте мне посмотреть, хорошо ли я это понял; в моей ситуации classA является классом Paint, в котором закодированы все функции рисования, такие как clearImage, а classB - это paintViewController, где UIbuttons? – Dodgson86

+0

Я не знаком с Cocos2d, с которого связан CCLayer. Но это не должно мешать ему использовать ту же технику. Является ли ваша Paint подклассом CCLayer? Вы также можете попробовать использовать NSNotification. – user523234

+0

Просто просмотрите свой код: Paint * newInstance = [[Paint alloc] init]; [newInstance clearImage]; Это не сработает. Поскольку newInstance не совпадает с текущим экземпляром Paint, который вы хотите очистить. – user523234

Смежные вопросы