Jak wywołać to -(void){} (funkcja, metoda? przepraszam, zapomniałem terminologii) z innego pliku .m?

Chciałbym również móc wywołać to w lokalnym pliku .m, takim jak [self closeMenu];

Oto -(void){} :

-(void)closeMenu{

//close the menu

[UIView animateWithDuration:0.6 animations:^{

    [UIView setAnimationBeginsFromCurrentState:YES]; // so it doesn't cut randomly, begins from where it is

    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    [menuView setFrame:CGRectMake(menuView.frame.origin.x, -menuView.frame.size.height, menuView.frame.size.width, menuView.frame.size.height)];

}];

}
-1
Neil 17 październik 2012, 05:53

2 odpowiedzi

Najlepsza odpowiedź

Musisz zadeklarować metodę w pliku .h, który ma interfejs.

W TwojaKlasa.h

@interface YourClass:NSObject
- (void)closeMenu;
@end

W TwojaKlasa.m

@implementation YourClass
- (void)closeMenu
{
    //Close the menu
}
@end

Następnie musisz zaimportować (#import "YourClass.h") do innego pliku, z którego chcesz wywołać tę metodę.

#import "YourClass.h"

@implementation OtherClass
- (void)otherMethod
{
    YourClass *foo = [[YourClass alloc] init];
    [foo closeMenu];
}
@end
3
Stas Jaro 17 październik 2012, 06:08

Wygląda na to, że mówisz o jakiejś metodzie kontrolera, która zwija pewnego rodzaju menuView i wygląda na to, że jest to globalne menuView, które chcesz udostępnić reszcie aplikacji.

Zawsze, gdy mam „udostępnione” widżety, używam do nich menedżera.

Czy możesz opisać rodzaj architektury, o której mówisz?

Ponieważ najbrudniejszym rodzajem podejścia „kod próbki Apple”, które wyskakuje mi z głowy, jest przechowywanie odniesienia do tego dziecka w delegatze aplikacji i z dowolnego miejsca w aplikacji, możesz to zrobić:

MyDelegate * delegate= (MyDelegate)[UIApplication sharedApplication] delegate];
[delegate.myCoolMenuController closeMenu];

Mam nadzieję, że to działa dla ciebie.

Twoje zdrowie

-1
Dario 17 październik 2012, 06:13