【问题标题】:Processing a method after the view has loaded在视图加载后处理方法
【发布时间】:2010-06-08 11:28:59
【问题描述】:

我已经实现了一个子视图,当我单击父视图中的按钮时,它应该会立即加载。加载子视图(基本上是一个活动指示器)后,程序应该在其中处理一个方法(从服务器获取数据,因此需要时间)。

但是,我做不到。

现在发生的情况是,当我单击父视图上的按钮时,它首先处理该方法,然后才在屏幕上加载子视图。

为什么会这样?是否有任何特定功能可以让我的方法仅在视图加载后才加载?

【问题讨论】:

    标签: iphone xcode navigation subview


    【解决方案1】:

    我遇到了同样的问题,我使用了 NSAutoreleasePool 并解决了这个问题。希望对你有帮助。

    - (void)viewDidLoad {
    
       [self performSelectorInBackground:@selector(loadXml) withObject:nil];
    
     }
    
     -(void) loadXml{
    
            NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
           NSString * path =@"http:www.YOUR_RSS_FEED.com";
    
           [self parseXMLFileAtURL:path];       //(Instead of ViewDidAppear)
    
          [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
    
           [pool drain];
    
       }
    

    谢谢。

    【讨论】:

      【解决方案2】:

      几种不同的方法:

      如果子视图具有加载图像和执行比视图更复杂的功能的功能,一个好的方法是将其改为 ViewController。

      在顶部 ViewController 中使用:

      - (void) loadView { 
          [super loadView];
      }
      

      设置在显示视图时需要准备的东西。

      用途:

      -(void) viewDidLoad {
      
      }
      

      进行额外的设置。

      在您的情况下,听起来好像您需要在 loadView 方法中添加指标,然后在 viewDidLoad 方法中开始检索数据。

      如果您正在访问网络服务等,请始终在不同的线程上执行此操作。 (查看 NSOperation 以获得实现此目的的简单好方法)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-17
        • 1970-01-01
        • 2018-10-18
        • 1970-01-01
        • 2014-09-27
        • 2021-12-20
        相关资源
        最近更新 更多