开发者

ipad subview not loading before code is executing

I have a command that should be loading a subview before a particular piece of time intensive code executes. However the command runs, the timely code executes and then the subview shows up. Is there anything I can do to fix this problem?

progressViewController = [[ProgressView alloc] initWithNibName:@"ProgressView" bundle:[NSBundle mainBundle]];
[self.view addSubview:[progressViewContr开发者_如何学编程oller view]];



NSString *name=@"guy";
NSString *encodedName =[[NSString alloc] init];

int asci;

for(int i=0; i < [name length]; i++)
{
    //NSLog(@"1");
        asci = [name characterAtIndex:i];
    NSString *str = [NSString stringWithFormat:@"%d,", asci];
        encodedName =[encodedName stringByAppendingFormat: str];
}

NSString *urlString = [NSString stringWithFormat:@"someurl.com"];

NSURL *theUrl = [[NSURL alloc] initWithString:urlString];

NSString *result=[NSString stringWithContentsOfURL:theUrl];

result = [result substringFromIndex:61];
result = [result substringToIndex:[result length] - 20];

NSLog(result);


outLab.text=result;


[[progressViewController view] removeFromSuperview];


1) try [self.view setNeedsUpdating] after adding the subview

2) try splitting the time intensive into another thread....

- (void) f
{
// executed in main UI thread
progressViewController = [[ProgressView alloc] initWithNibName:@"ProgressView" bundle:[NSBundle mainBundle]];
[self.view addSubview:[progressViewController view]];

  [NSThread detachNewThreadSelector:@selector(doCompute) toTarget:self
        withObject:nil];

}

- (void) doCompute
{
// in a different thread....so we need a autoreleasepool
    NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
   // do your computation here...

[self performSelectorOnMainThread:@selector(taskComplete:)
                               withObject:result waitUntilDone:NO];

 [autoreleasepool release];

}

- (void) taskComplete
{
   // executed in UI thread
   [self.progressView removeFromSuperView];
}


You could subclass the view and then use the viewDidLoad function to execute your long running code.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜