0

我有一个主视图(第一个视图),单击一个按钮将我带到另一个视图(第二个视图),其中包含 tableview ..我在 viewDidLoad 中解析来自我的服务器的数据。问题是如果我使用dismissmodalView关闭我的第二个视图并单击我的 mainview 中的相同按钮。控制器转到 viewDidLoad 而不是 viewDidAppear ..这使得再次加载服务器并填充表视图。

-(void)loadFeeds
{
    //Activity Indicator MBProgressHUD
    if(activity == nil){
        activity = [[MBProgressHUD alloc] initWithView:self.view];
        [self.view addSubview:activity];
        [activity hide:YES];
    }

    //Pull to Refresh (Ego refresh header view) Declarations Facebook and Twitter
    if (_refreshHeaderViewTwitter == nil) {
        EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.tblTwitter.bounds.size.height, self.view.frame.size.width, self.tblTwitter.bounds.size.height)];
        view.delegate = self;
        [self.tblTwitter addSubview:view];
        _refreshHeaderViewTwitter = view;
        [_refreshHeaderViewTwitter refreshLastUpdatedDate];
    }

    [activity show:YES];
    dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{

        getTwitterArray = [[NSMutableArray alloc]initWithArray:[Util getJsonArray:Twitter]];

        dispatch_async(dispatch_get_main_queue(), 
                       ^{            
                           [self.tblTwitter reloadData];
                           [activity hide:YES];
                       });
    });
}
4

2 回答 2

1

解雇 viewcontroller 摆脱它。

您将不得不手动管理持久性。

因此,您需要将视图控制器的最后状态保存在比视图控制器更高的持久性级别。那是在磁盘上还是在 appdelegate 中。这取决于您,但视图控制器工作正常。

于 2012-08-08T06:29:39.307 回答
0

如果您希望视图控制器在您关闭其呈现的视图控制器之前一直存在,那么您可以将视图控制器保留为属性

@property (nonatomic, retain) MyModalViewController *myModalViewController;

并在它的getter方法中延迟加载它..

- (MyModalViewController *)myModalViewController
{
  if (_myModalViewController == nil)
  {
    _myModalViewController = [[MyModalViewController alloc] initWithNibName:nil bundle:nil];
  }
  return _myModalViewController;
}

那么您的视图控制器将挂起,如果/当您收到内存警告时,将属性设置为 nil 并且它将正确卸载。

于 2012-08-08T07:18:58.127 回答