К вашему сведению, я программирую на объективе-C, но любой может помочь. Я сидел здесь в течение последних двух часов, пытаясь выяснить, в чем проблема, и я сделал все, что я знаю, чтобы отладить эту простую небольшую проблему кодирования. Проверьте код ниже, и я объясню. В приложении это начинается с MainScreenViewController. Мое приложение предоставляет пользователю два варианта ... выбрать кнопку «мастер» или «рабочий» (базовая модель клиент-сервер). В зависимости от выбора пользователя приложение должно загружать другое представление (либо MasterViewController, либо WorkerViewController). Теперь, когда я запускаю приложение, если вы следовали командам печати и гипотетически выбираете кнопку «master», то в моей программе оно печатает «masterButtonPressed - Stage 1» и «masterButtonPressed - Stage 2», но больше ничего. Представление также не меняется, что говорит мне, что проблема заключается в коде в разделе AppDelegate. После того, как я поместил туда команды печати и запустил приложение, оно по-прежнему не печатает два оператора, которые я имею в разделе AppDelegate. У меня есть правильные операторы #import в правильных файлах, я просто не включил их здесь, потому что это занимает бесполезное пространство. Я могу скомпилировать код без ошибок и предупреждений. Теоретически, то, что я должен видеть в консоли, это четыре строки, когда я нажимаю кнопку «мастер», и они (по порядку) - «masterButtonPressed - Stage 1», «changeToMaster - Stage 1», «changeToMaster - Stage 2», и "masterButtonPressed - Stage 2". Может кто-нибудь указать, где я ошибся? Как я уже сказал, при нажатии кнопки «мастер» вид никогда не меняется. Спасибо за вашу помощь!
MainScreenViewController.h
@interface MainScreenViewController : UIViewController {
}
-(IBAction)masterButtonPressed;
-(IBAction)workerButtonPressed;
@end
MainScreenViewController.m
@implementation MainScreenViewController
-(IBAction)masterButtonPressed {
NSLog(@"masterButtonPressed - Stage 1");
[ErwinAppDelegate changeToMaster];
NSLog(@"masterButtonPressed - Stage 2");
}
-(IBAction)workerButtonPressed {
NSLog(@"workerButtonPressed - Stage 1");
[ErwinAppDelegate changeToWorker];
NSLog(@"workerButtonPressed - Stage 2");
}
@end
ErwinAppDelegate.h
@class MainScreenViewController, MasterViewController, WorkerViewController;
@interface ErwinAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
MainScreenViewController *mainScreenViewController;
MasterViewController *masterViewController;
WorkerViewController *workerViewController;
}
@property(nonatomic, retain) IBOutlet UIWindow *window;
@property(nonatomic, retain) IBOutlet MainScreenViewController *mainScreenViewController;
@property(nonatomic, retain) IBOutlet MasterViewController *masterViewController;
@property(nonatomic, retain) IBOutlet WorkerViewController *workerViewController;
-(void)changeToMaster;
-(void)changeToWorker;
@end
ErwinAppDelegate.m
@implementation ErwinAppDelegate
@synthesize window, mainScreenViewController, masterViewController, workerViewController;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after application launch
[window addSubview:mainScreenViewController.view];
[window addSubview:masterViewController.view];
[window addSubview:workerViewController.view];
[window makeKeyAndVisible];
// Bring first view up front
[window bringSubviewToFront:mainScreenViewController.view];
}
-(void)changeToMaster {
NSLog(@"changeToMaster - Stage 1");
[window bringSubviewToFront:masterViewController.view];
NSLog(@"changeToMaster - Stage 2");
}
-(void)changeToWorker {
NSLog(@"changeToWorker - Stage 1");
[window bringSubviewToFront:workerViewController.view];
NSLog(@"changeToWorker - Stage 2");
}
@end