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)];
}];
}
2 odpowiedzi
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
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
Podobne pytania
Nowe pytania
iphone
NIE używaj tego znacznika, chyba że adresujesz konkretnie iPhone'a i / lub iPoda touch firmy Apple. W przypadku pytań niezależnych od sprzętu użyj tagu [ios]. Więcej tagów do rozważenia to [xcode] (ale tylko jeśli pytanie dotyczy samego IDE), [swift], [objective-c] lub [cocoa-touch] (ale nie [cocoa]). Proszę powstrzymać się od pytań dotyczących iTunes App Store lub iTunes Connect. Jeśli używasz języka C #, oznacz tagiem [mono].