Какова цель вашего @"checkRegister"
уведомления, у вас есть if(strUserName != NULL)
, проверьте, если вы, прежде чем публиковать уведомление, но я не вижу, где вы можете настроить strUserName
так определенно, попробуйте NSLog(@"%@", strUserName)
,Я уверен, что это ноль.если это strUserName
взято из данных XML, которые вы анализируете, вы должны опубликовать уведомление после кода синтаксического анализа XML, что будет в ваших NSXMLParser
методах делегирования, которые вы реализуете.Который будет одним из них, который вы используете.
[xmlParser parse]
не блокируется, поэтому ваш
if(strUserName != NULL)
[[NSNotificationCenter defaultCenter] postNotificationName:@"checkRegister" object:nil];
будет вызван до того, как xmlParser
закончит анализИтак, ваше strUserName еще не установлено, и это причина того, что он равен нулю, и ваш postNoticationName:
не будет называться
РЕДАКТИРОВАТЬ:
положить ваш
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkRegister:) name:@"checkRegister" object:nil];
в самом верху вашего application:didFinishLaunchingWithOptions:
весьма вероятно, что вы разместите уведомление на главном экране до того, как зарегистрируетесь для уведомления, например,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkRegister:) name:@"checkRegister" object:nil];
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.mainViewController = [[[MainViewController alloc] initWithNibName:@"MainViewController_iPhone" bundle:nil] autorelease];
} else {
self.mainViewController = [[[MainViewController alloc] initWithNibName:@"MainViewController_iPad" bundle:nil] autorelease];
}
self.window.rootViewController = self.mainViewController;
[self.window makeKeyAndVisible];
return YES;
}
будет работать, а
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.mainViewController = [[[MainViewController alloc] initWithNibName:@"MainViewController_iPhone" bundle:nil] autorelease];
} else {
self.mainViewController = [[[MainViewController alloc] initWithNibName:@"MainViewController_iPad" bundle:nil] autorelease];
}
self.window.rootViewController = self.mainViewController;
[self.window makeKeyAndVisible];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkRegister:) name:@"checkRegister" object:nil];
return YES;
}
не будет работать, если загрузка данных выполняется методом MainControllerView
viewDidLoad
.