使用TabBarController从app delegate重置tableview滚动值

时间:2016-11-07 21:08:17

标签: ios objective-c uitableview uitabbarcontroller

我正在尝试通过选择appdelegate.m中的标签栏项来调用方法来重置表视图滚动值(到顶部):

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    if (_appTabBarController.selectedIndex == 0) {

   HomeFeedVC *homeFeedVC = [[HomeFeedVC alloc]init];
   [homeFeedVC resetFeedValue];
  }
}

该方法是从我的HomeFeedVC.m调用的:

    -(void)resetFeedValue
    {

        [_tableHomeFeed setContentOffset:CGPointZero animated:YES];

    }

该方法运行顺畅,但是当我调用该方法时,我的-dealloc方法在同一个视图控制器中调用:

    - (void)dealloc
{
    [[NSNotificationCenter defaultCenter]removeObserver:self name:@"uploadgif" object:nil];
    NSLog(@"dealloced called for HOME FEED VC...................");
    //    self.uploadProgressView=nil;
    //    infBtn = nil;
    //    [arrFeedData removeAllObjects],arrFeedData = nil;
    //    [self.progressBuffer removeAllObjects],self.progressBuffer = nil;
    //    self.session = nil;
    //    [self.tempDirectUrls removeAllObjects],self.tempDirectUrls = nil;
    //    [self.imageBuffer removeAllObjects],self.imageBuffer = nil;
}

我不知道还能做什么...我应该实施协议吗?如果是这样,那有什么不同?我仍然成功调用该方法,因为如果我将该方法放在我的视图中的任何IBAction下,它就会成功执行。我的断点也经历了我想要的代码行。

1 个答案:

答案 0 :(得分:0)

您不应在HomeFeedVC中创建新的-didSelectViewController - 请改为引用现有的if (_appTabBarController.selectedIndex == 0) { HomeFeedVC *homeFeedVC = (HomeFeedVC *)viewController; [homeFeedVC resetFeedValue]; }

start "Runnning" /B CMD /C CALL "file\program.exe" 23 12 

如果您需要更多帮助,请与我联系。