Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6872159
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T03:53:34+00:00 2026-05-27T03:53:34+00:00

I am using a Window based application and then loading up my initial navigationview

  • 0

I am using a Window based application and then loading up my initial navigationview based controller in the appDelegate part – application didFinishLaunchingwithOptions (UPDATED)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

The method of getting the data from the webservice is usually triggered in this method of viewdidload …. in the [self getData]; method.

- (void)viewDidLoad
{
    [super viewDidLoad];


    if (_refreshHeaderView == nil) {

        EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.tableView.bounds.size.height, self.view.frame.size.width, self.tableView.bounds.size.height)];
            view.delegate = self;
        [self.tableView addSubview:view];
        _refreshHeaderView = view;
        [view release];

    }

    //  update the last update date
        [_refreshHeaderView refreshLastUpdatedDate];


        [self loadImages];


    HUDMB = [[MBProgressHUD alloc] initWithView:self.view];
    [self.view addSubview:HUDMB];

    HUDMB.dimBackground = YES;

        // Regiser for HUD callbacks so we can remove it from the window at the right time
    HUDMB.delegate = self;

    HUDMB.labelText = @"Loading..";

    [HUDMB show:TRUE];
    [self getData];
    [self.tableView reloadData];



}

Before loading it if the user is not registered/ does not have a credentials present then it takes the user to a login view controller .

- (void)loadView {
    [super loadView];

    if([Preferences isValid]?YES:NO)
    {

    }
    else
    {
        int r = arc4random() % 5;


        switch (r) {
            case 0:
            {
                loginViewController *sampleView = [[loginViewController alloc] initWithNibName:@"loginViewController" bundle:nil];
                [self.navigationController presentModalViewController:sampleView animated:YES];
                [sampleView release];
            }
                break;
            case 1:
            {
                loginViewController *sampleView = [[loginViewController alloc] initWithNibName:@"loginViewController" bundle:nil];                
                [sampleView setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
                [self.navigationController presentModalViewController:sampleView animated:YES];
                [sampleView release];
            }
                break;
            case 2:
            {
                loginViewController *sampleView = [[loginViewController alloc] initWithNibName:@"loginViewController" bundle:nil];
                [sampleView setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
                [self.navigationController presentModalViewController:sampleView animated:YES];
                [sampleView release];
            }
                break;
            case 4:
            {
                loginViewController *sampleView = [[loginViewController alloc] initWithNibName:@"loginViewController" bundle:nil];
                [sampleView setModalTransitionStyle:UIModalTransitionStylePartialCurl];
                [self.navigationController presentModalViewController:sampleView animated:YES];
                [sampleView release];
            }
                break;
            case 3:
            {
                loginViewController *sampleView = [[loginViewController alloc] initWithNibName:@"loginViewController" bundle:nil];
                [sampleView setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
                [self.navigationController presentModalViewController:sampleView animated:YES];
                [sampleView release];
            }
                break;

            default:
                break;
        }  
    }


}

I think the getdata function is making a lot of troubles. so let me add that and also the corresponding functions i use for data retrieval and serialization.

-(void)getData{


    NSLog(@"loggin into call sheet page");

    [self getCallSheetData]; 

    NSLog(@"after call sheet");
}

- (void)getCallSheetData
{

    NSString *postCMD = @"Blah... Blah... Blah...";
    NSMutableData *postDataCMD = (NSMutableData *)[postCMD dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSURL *url = [NSURL URLWithString:[Preferences getURL]];
        //    NSLog(@"get call Sheet");
    NSString *postLengthCMD = [NSString stringWithFormat:@"%d", [postDataCMD length]+1];
        //    NSLog(@"The CS String: %@",[Preferences retriveSession]);
    requestCMD = [ASIHTTPRequest requestWithURL:url];
    [requestCMD setURL:url];
    [requestCMD addRequestHeader:@"Content-Length" value:postLengthCMD];
    [requestCMD addRequestHeader:@"Content-Type" value:@"application/x-www-form-urlencoded"];
    [requestCMD addRequestHeader:@"user-Agent" value:@"Mobile 1.4" ];
    [requestCMD addRequestHeader:@"Content-Language" value:@"en-US"];
    [requestCMD addRequestHeader:@"Accept-Encoding" value:@"gzip"];
    [requestCMD addRequestHeader:@"Cookie" value:[Preferences retriveSession]];


    [requestCMD setPostBody:postDataCMD]; 

    [requestCMD setDelegate:self];
    [requestCMD startAsynchronous];
}




- (void)requestFinished:(ASIHTTPRequest *)request
{

    NSMutableArray *CSArray = [[NSMutableArray alloc] init];
    if( [[request responseString] isEqualToString:@"OK"]){
        return;
    }

        // Use when fetching binary data
    NSData *responseData = [request responseData];
    NSDateFormatter *formatter1=[[NSDateFormatter alloc]init];
    [formatter1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
    NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    [formatter1 setTimeZone:gmt];

    NSDateFormatter *formatterFinal=[[NSDateFormatter alloc]init];
    [formatterFinal setDateStyle:NSDateFormatterMediumStyle];
    [formatterFinal setTimeStyle: NSDateFormatterShortStyle];
    [formatterFinal setLocale:[NSLocale currentLocale]];

    JSONDecoder *jCSArray = [[JSONDecoder alloc]init];



    NSMutableArray *theObject = [jCSArray objectWithData:responseData];
        //        CallSheet= [NSMutableArray arrayWithCapacity:50];





    for(id key in theObject)
    {

        csr = [[CallSheetRecord alloc] init];

            //        cName,cCompany,cId,cMemberId,crcStatus,crcTarget,cImportance,cLastContact  
        csr.importance = @"1";
        csr.rcstatus = @"1";
        csr.rcTarget = @"1";
        csr.company = @"";
        csr.lastContact= @"";

        if([key valueForKey:@"firstName"]  != Nil) 
        {

            csr.name = [NSString stringWithFormat:@"%@",[key valueForKey:@"firstName"]] ;

            if ([key valueForKey:@"lastName"]  != Nil) {
                csr.name = [csr.name stringByAppendingString:@" "];
                csr.name = [csr.name stringByAppendingString:[NSString stringWithFormat:@"%@",[key valueForKey:@"lastName"]]];
            }

        }



        if([key valueForKey:@"company"] != Nil) 
        {

            csr.company = [NSString stringWithFormat:@"%@",[key valueForKey:@"company"]] ;


        }

        if([key valueForKey:@"memberId"]  != Nil) 
        {
            csr.memberId = [NSString stringWithFormat:@"%@",[key valueForKey:@"memberId"]] ;

        }

        if([key valueForKey:@"id"] != Nil) 
        {
            csr.id_ = [NSString stringWithFormat:@"%@",[key valueForKey:@"id"]] ;

        }

        if([key valueForKey:@"lastContact"]  != Nil) 
        {
            NSDate *finalDate =[formatter1 dateFromString:[NSString stringWithFormat:@"%@",[key valueForKey:@"lastContact"]]];


                //NSString *timeStamp = [formatter1 stringFromDate:[finalDate descriptionWithLocale:[NSLocale currentLocale]]];
                //NSLog(@"Time stamp : %@",[finalDate descriptionWithLocale:[NSLocale currentLocale]]);
                //NSLog(@"Time stamp : %@",timeStamp);
                //csr.lastContact = [key valueForKey:@"lastContact"];
            csr.lastContact = [formatterFinal stringFromDate:finalDate];


        }

        if([key valueForKey:@"importance"] != Nil) 
        {
            csr.importance = [NSString stringWithFormat:@"%@",[key valueForKey:@"importance"]];

        }

        if([key valueForKey:@"rcStatus"] != Nil) 
        {
            csr.rcstatus= [NSString stringWithFormat:@"%@",[key valueForKey:@"rcStatus"]] ;

        }

        if([key valueForKey:@"rcTarget"]  != Nil) 
        {
            csr.rcTarget = [NSString stringWithFormat:@"%@",[key valueForKey:@"rcTarget"]] ;

        }


        [CSArray addObject:csr]; 



    }
    CSD = [CSArray mutableCopy];

    [CSArray release];
    [formatter1 release];
    [formatterFinal release];

        //CallSheetArray = [CSArray mutableCopy];
        //[csr release];
    [jCSArray release];

    [HUDMB hide:TRUE];
    [self.tableView reloadData];







}

- (void)requestFailed:(ASIHTTPRequest *)request
{
    NSError *error = [request error];
    UIAlertView *message = [[[UIAlertView alloc] initWithTitle:@"Hello World!"
                                                      message:[NSString stringWithFormat:@"%@",error]
                                                     delegate:nil
                                            cancelButtonTitle:@"OK"
                                            otherButtonTitles:nil]autorelease];

    [message show];


}

then right after that i try to load the table with [self getData]; that i get make using webservice call using asiHTTP .. for this question lets say it takes 3 seconds time to get the data and then deserialize it . now… my question is it works out okey in the later runs as I store the username and password in a seure location… but in the first instance…. i am not able to get the data to laod to the tableview… I have tried a lot of things…

1. Initially the data fetch methods was in a diffrent methods.. so i thought that might be the problem as then moved it the same place as the tbleviewController(navigationController)

2. I event put in the Reload data at the end of the functionality for the data parsing and deserialization… nothing happens.

3. The screen is black screen with nothing displayed on it for a good 5 seconds in the consecutive launches of the app…. so could we have something like a MBPorgressHUD implemented for the same.

could any one please help for these scenarios and guidance as to what paths to take from here. …

Update:
Bounty Just answer 2 of the questions the best you can… The property was a thing i tried but it did not work… but my problem is not that… my problem is my screen is not able to load data from a webservice after i login until i do the “pull to refresh”. Next eventualy starting my app takes about 5 seconds to show the screen(till that it shows a black screen)… what is the best way to show the apps Blank screen to the End- user when they make it to the app. I dont want the user to think the app is not working or has adversly affected their phone.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T03:53:34+00:00Added an answer on May 27, 2026 at 3:53 am

    There are a number of potential issues here. The first is related to [self getData] – is this blocking or not?

    1. getData is blocking (synchronous)

    If this method is blocking (i.e. does not return immediately) then this will explain why you are not seeing anything on the screen for a few seconds. You are currently calling this method in the main thread, so it will stop the UI from being updated until is complete.

    You can make it run in the background by doing this:

    - (void) getDataInBackgroundThread
    {
       NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
    
       [self getData];
    
       // force the table to redraw - UI operations must be on the main thread
       [tableView performSelectorOnMainThread:@selector( reloadData )];
    
       [pool drain];
    }
    

    In your main code, now instead of calling [self getData] call [self getDataInBackgroundThread];

    2. getData is not blocking (asynchronous)

    Even if getData is blocking, if it runs in the main thread it will still cause the UI to hang. Also, if it uses a lot of processor time it will slow down the UI and give the appearance of not running in the background.

    To address this issue, you would need make sure the lengthy operation of getData really is not running in the main thread and also put in sleep() calls every so often to give some time for the UI to update.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Using VB.NET Windows Based Application In my software I am using a login page,
I just designed a simple For Loop using window form application. I would like
I am building a very dynamic web-based application using a lot of Javascript to
I am using a quad-core windows XP based Dell Machine machine in my office
I've been using Window Home Server for my backups here at home for most
I'm using window.onback = history.forward(); to prevent users from resubmitting data. I know it's
(WindowClosing) when i am using window event for closing current frame, in that it
Is there a maximum length when using window.returnValue (variant) in a modal? I am
For an iPhone app I was using window.scrollBy to scroll to the bottom of
The JavaScript security settings on Internet Explorer for my customers disallow using window.external.AddFavorite, and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.