当点击表格视图单元格时缓慢加载

问题描述:

当我点击表格视图单元格时,它将在同一个表格视图中持续一段时间(直到下一页完全加载),那么它将显示下一个视图..当点击表格视图单元格时缓慢加载

我要上单击表格视图单元格,应立即后藤下一个页面,并显示加载页面弹出..

我有impActivityAgent尝试,并试图表明警报视图时,它会进入下一个页面(但查看是前一页即表格视图)..但..其完全加载页面,这将需要时间,然后其显示警报..

在下一页我发布和解析数据,这将需要时间,在那段时间我想显示活动指标..

我已经尝试了很多方法,但仍然第一次完全加载下一页,然后显示内容或alertView或活动的指标,我不能够在表格视图单元格单击时,显示活动的指标..

我的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    nextTableViewController *doc = [[nextTableViewController alloc]initWithNibName:@"nextTableViewController" bundle:nil]; 
    [self.navigationController pushViewController:doc animated:YES]; 
} 

或下一视图控制器是:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view from its nib. 
[[ImpActivityAgent defaultAgent] makeBusy:YES]; 

NSURL *loadUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/gmail.com",inputURL]]; 
htmlData = [NSData dataWithContentsOfURL:loadUrl]; 
self.htmlSTR = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding]; 
[self parseHTML]; 
} 

和在解析函数我解析我得到的内容,作为HTML格式的答复使用“hpple”解析器..

+0

检查任何回地面的过程是怎么回事代替ü选择的行之后。发布一些相关的代码。 – Ganapathy 2013-04-08 04:33:55

+0

no there is no back groung正在进行的过程.. – Raju 2013-04-08 04:39:22

+0

@Raju,发布您的代码 – 2013-04-08 04:40:24

只需使用一个单独的线程来处理解析。希望这段代码能帮助你。

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view from its nib. 
[[ImpActivityAgent defaultAgent] makeBusy:YES]; 

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

} 


-(void)newMethodForParsing 
{ 
NSURL *loadUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/gmail.com",inputURL]]; 
htmlData = [NSData dataWithContentsOfURL:loadUrl]; 
self.htmlSTR = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding]; 
[self parseHTML]; 

[tableView reload]; // tableView refers to ur table view name 

} 
+0

现在得到我所需要的但它不调用“ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath”函数..它存在于nextViewController .. – Raju 2013-04-08 05:31:47

+0

现在检查。更新了我的答案。一旦解析完成,U需要重新加载表视图。 – Ganapathy 2013-04-08 05:36:17

+0

雅感谢它的工作.. – Raju 2013-04-08 05:39:37

试试这个

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    [[ImpActivityAgent defaultAgent] makeBusy:YES]; 
    [self performSelectorInBackground:@selector(start) withObject:Nil]; 
    //or you can use after delay then no need to use perform selector on main thread in start method. 
    [self performSelector:@selector(start) withObject:nil afterDelay:0.5]; 
} 

-(void)start 
{ 
    NSURL *loadUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/gmail.com",inputURL]]; 
    htmlData = [NSData dataWithContentsOfURL:loadUrl]; 
    self.htmlSTR = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding]; 
    [self performSelectorOnMainThread:@selector(parseHTML) withObject:Nil waitUntilDone:YES]; 
} 

试试吧....

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(newMethodForParsing) userInfo:nil repeats:NO]; 
} 

-(void)newMethodForParsing 
{ 
NSURL *loadUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/gmail.com",inputURL]]; 
htmlData = [NSData dataWithContentsOfURL:loadUrl]; 
self.htmlSTR = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding]; 
[self parseHTML]; 
} 
+0

@Raju:尝试我的代码它是100%帮助你我多次使用它.... – 2013-04-08 05:28:52

+0

对不起,它不工作.. – Raju 2013-04-08 12:06:18

Ganapathy的回答是存在内存泄漏,你需要放置一个autoreleasepool的方法内。这是一个更简单的方法来做到这一点。这将在主线程上运行,但在队列中的现有任务之后运行。

如果你想让它在不同的线程运行与dispatch_get_global_queue()

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    [[ImpActivityAgent defaultAgent] makeBusy:YES]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 

     NSURL *loadUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/gmail.com",inputURL]]; 
     htmlData = [NSData dataWithContentsOfURL:loadUrl]; 
     self.htmlSTR = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding]; 
     [self parseHTML]; 
    ) 
}