У меня есть следующий метод в файле GameScreen.m с собственным объявлением - (void) drawNumbers в файле GameScreen.h:
//GameScreen.h
#import <UIKit/UIKit.h>
@interface GameScreen : UIView
{
IBOutlet UIButton *cell00;
}
- (void) drawNumbers;
- (IBAction) onCellClick:(id)sender;
@property (nonatomic, retain) IBOutlet UIButton *cell00;
@end
//GameScreen.m
#import "GameScreen.h"
- (void) drawNumbers
{
//testing if this works, so far it doesn't
[cell00 setTitle:@"Whatever" forState:UIControlStateNormal];
[cell00 setTitle:@"Whatever" forState:UIControlStateHighlighted];
}
Я пытаюсь вызвать этот метод из моего файла GameScreenViewController.m следующим образом:
//GameScreenViewController.m
#import "GameScreenViewController.h"
#import "GameScreen.h"
...
- (void) viewDidLoad
{
GameScreen *aGameScreen = [[GameScreen alloc] init];
[aGameScreen drawNumbers];
[aGameScreen release];
[super viewDidLoad];
}
Предполагается, что это изменит заголовок кнопки в файле GameScreen.xib, где GameScreenViewController.m — это viewController, а класс GameScreen — обработчик событий, в котором я получаю все нажатия кнопок, запуск таймеров и т. д. Я пытаюсь вызвать [drawNumbers ] из [viewDidLoad], так как я хочу, чтобы заголовок менялся при выводе экрана на передний план (управление экраном осуществляется через файлы AppDelegate).
Дело в том, что если я вызову экземпляр drawNumbers внутри того же класса через
//GameScreen.m
#import GameScreen.h
-(void) onButtonClick:(id)sender
{
//some other code
[self drawNumbers];
}
он работает (как говорится, все в порядке с реализацией кода или графическим интерфейсом).
Я просмотрел Apple Guide и множество страниц в Интернете, но, похоже, не могу найти в этом никакой информации. Буду очень признателен за любую дополнительную помощь (включая ответы о том, где именно найти ответ в ADG).
(Отредактировано: здесь идет код AppDelegate для перехода к конкретному представлению, на всякий случай):
//myAppAppDelegate.h
#import <UIKit/UIKit.h>
@class myAppViewController, GameScreenViewController;
@interface myAppDelegate : NSObject <UIApplicationDelegate>
{
UIWindow *window;
myAppViewController *viewController;
GameScreenViewController *gameScreenViewController;
}
- (void) flipToGameScreen;
@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) GameScreenViewController *gameScreenViewController;
@end
//myAppAppDelegate.m
-(void) flipToGameScreen
{
GameScreenViewController *aGameScreenView = [[GameScreenViewController alloc] initWithNibName: @"GameScreen" bundle:nil];
[self setGameScreenViewController:aGameScreenView];
[aGameScreenView release];
[gameScreenViewController.view.frame = [[UIScreen mainScreen] applicationFrame];
[viewController.view removeFromSuperview];
[self.window addSubview:[gameScreenViewController view]];
}
cell00
вGameScreen
? Это не показано здесь, и это может бытьnil
во время вызова метода-drawNumbers
. - person   schedule 28.10.2011