ipad subview не загружается перед выполнением кода - PullRequest
0 голосов
/ 11 июня 2010

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

progressViewController = [[ProgressView alloc] initWithNibName:@"ProgressView" bundle:[NSBundle mainBundle]];
[self.view addSubview:[progressViewController 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];

Ответы [ 2 ]

0 голосов
/ 12 июня 2010

Вы можете создать подкласс представления, а затем использовать функцию viewDidLoad для выполнения вашего долго выполняющегося кода.

0 голосов
/ 12 июня 2010

1) попробуйте [self.view setNeedsUpdating] после добавления подпредставления

2) попробуйте разделить интенсивное время на другой поток ....

- (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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...