Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 每次都有人打电话_Objective C_Xcode - Fatal编程技术网

Objective c 每次都有人打电话

Objective c 每次都有人打电话,objective-c,xcode,Objective C,Xcode,我有一个主视图(第一视图),点击一个按钮将我带到另一个视图(第二视图)其中包含tableview..我正在viewDidLoad中解析来自服务器的数据。问题是,如果我使用dismissmodalView关闭第二个视图,然后单击主视图中的同一按钮。控制器将转到viewDidLoad而不是ViewDidDisplay..这使得再次加载服务器并填充表视图 -(void)loadFeeds { //Activity Indicator MBProgressHUD if(activity

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

-(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];
                       });
    });
}

解除viewcontroller会将其清除

您必须手动管理持久性


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

如果希望视图控制器在关闭其显示视图控制器之前一直挂起,则可以将视图控制器保留为属性

@property(非原子,保留)MyModalViewController*MyModalViewController

并将其惰性加载到它的getter方法中

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

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

我得到了另一个表视图,我正在从youtube加载提要,并在viewDidload中解析它。当我关闭并打开控制器时,它不会进入viewDidload,而是进入ViewDidAppear。你是说当它再次打开时,它不会重新解析吗?是的,因为通常控制器会进入ViewDid出现,数组中将有以前缓存的数据,这些数据将是tableview。但我的问题是,每当我出现并关闭模态视图控制器时,ViewDid都会加载。这会导致每次都重新加载tableview。您无法阻止它。正在调用viewDidLoad,因为视图以前已销毁。