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