Какова цель Вашего уведомления @"checkRegister"
, у вас есть if(strUserName != NULL)
чека в случае, прежде чем отправлять уведомление, но я не вижу, где вы настройки, что strUserName
так определенно, попробуйте NSLog(@"%@", strUserName)
, Я почти уверен, что это пусто. если это strUserName
из XML-данных вашего синтаксического анализа, вы должны опубликовать уведомление после кода анализа XML, который будет в ваших методах делегирования NSXMLParser
, которые вы реализуете. Какой будет one of these you use.
[xmlParser parse]
не блокирует, поэтому ваш
if(strUserName != NULL)
[[NSNotificationCenter defaultCenter] postNotificationName:@"checkRegister" object:nil];
будет называться до xmlParser
завершения разбора, поэтому, ваш strUserName еще не установлено, и это причина, это ноль и ваш postNoticationName:
не будет называться
EDIT:
положить
[[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
метод.
Где находится 'strUserName'? Как вы знаете, что уведомление отправляется? Вы поставили точку останова на этой линии и подтвердили, что ее вызывают? – user1118321
Он устанавливается при разборе. Это не проблема. Я не могу вызвать метод checkRegister. – Nitish