2012-05-05 2 views
2

Я пытаюсь открыть специальный viewController, если это первый пользователь в моем приложении. Раньше я работал над этим в других ситуациях, но по какой-то причине он сейчас не работает. Я пробовал два разных подхода, и никто не работает. Первое, что я пробовал, это проверить и сделать это прямо из appDelegate ... Затем я попытался проверить, был ли это первый раз из метода viewDidLoad с контроллерами корневого представления, и если он в первый раз вызывает вызов, чтобы открыть специальную страницу регистрации , Niether работает, и я понятия не имею, почему ..... Вот некоторые из кода, который я использую:Программный вызов segue не работает

Это внутри rootviewcontroller. Когда я это делаю, он печатает «Main is First Time» в журнале, поэтому я знаю, что он делает это там. Я проверил на SEGUE в раскадровке и назван правильно и идет и из правильных мест ....

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    if([appDelegate firstTime]) 
    { 
    [self performSegueWithIdentifier:@"mToRegister" sender:self]; 
     NSLog(@"Main is First time"); 
    } 
    // Do any additional setup after loading the view. 
} 

Внутри AppDelegate:

NSUserDefaults * standardUserDefaults = [NSUserDefaults standardUserDefaults];
BOOL естьused = [стандартUserDefaults boolForKey: @ "hasused"];

if(haveused){  
    //NOT THEIR FIRST TIME 
    //Handle scenario 
    firstTime = NO; 

    NSString* guid = [[NSMutableString alloc]initWithString:[self getMacAddress]]; 
    //interest = [appDelegate interest]; 

    NSString *splitter = [[NSString alloc]initWithString:@"&"]; 
    NSMutableString *post = [[NSMutableString alloc]initWithString: @"user_read=1&guid="]; 
    [post appendString:guid]; 
    NSLog(@"String for Post is %@", post); 
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
    [request setValue:@"Basic ==" forHTTPHeaderField:@"Authorization"]; 
    [request setURL:[NSURL URLWithString:@"http://something.com/app/usercrud.php"]]; 
    [request setHTTPMethod:@"POST"]; 
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
    [request setHTTPBody:postData]; 

    theConnection = [[NSURLConnection alloc]initWithRequest:request delegate:self]; 
} 
else { 
     NSLog(@"This is the First time"); 
     firstTime = YES; 
     //THEIR FIRST TIME 
     //Handle scenario 



//  UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" 
//                 bundle: nil]; 
//   
//  UIViewController *controller = (UIViewController*)[mainStoryboard 
//               instantiateViewControllerWithIdentifier: @"register"]; 
//  UIViewController *root = (UIViewController *)self.window.rootViewController; 
//  [root presentModalViewController:controller animated:YES]; 
     [self.window.rootViewController performSegueWithIdentifier:@"mToRegister" sender:self];   

    } 

Любые идеи, почему это не сработает? Если кто-нибудь не знает лучшего способа справиться с этой ситуацией?

ответ

0

Что делать, если ваш делегат приложения не управляется должным образом, используйте NSDefaults для хранения уникальной уникальной информации и проверки следующего запуска, если это существует в NSDefaults, то это не первый раз, и если он не существует , это не первый раз. проверьте, если и если все еще существует prblm, то отправьте свою часть if из делегата приложения

+0

Я проверил, и nsdefaults работает нормально ... Я отправлю часть IF, хотя – Rmyers

+0

huh? ваша проблема решена или нет? – Saad

+0

Нет ... пользовательские настройки по умолчанию работают так, как должны. Он отлично показывает, что это первый раз или нет, я просто не могу загружать другую страницу, кроме контроллера корневого представления, если это первый раз ... То, что моя проблема – Rmyers

0

Какой тип вы используете? Модальный? Я считаю, что для нажима требуется контроллер навигации, поэтому я спрашиваю.

Код, используемый в viewDidLoad для RootViewController должен работать, поскольку я делаю что-то подобное, когда вы хотите, чтобы пользователь входил в мое приложение. Поэтому мои вопросы касаются только того, как был настроен segue, и убедиться, что он действителен и все такое.

Возможно, попробуйте удалить segue и воссоздать его тоже?

Также не относится к теме вопроса, но лучше всего не ставить много кода в AppDelegate, возможно, лучше всего реорганизовать это на отдельный объект/синглтон.

+0

спасибо за совет, я ценю, что :) – Rmyers

Смежные вопросы