【问题标题】:Why ViewDidApper and ViewWillApper are not always called?为什么不总是调用 ViewDidAppear 和 ViewWillAppear?
【发布时间】:2014-04-12 15:18:18
【问题描述】:

我有一个方法可以根据 UITextView 的内容设置 UIScrollView 和 UITextView 的高度。我意识到,当从 viewWillAppear 而不是从 viewDidLoad 调用方法时,textview 和 scrollview 都正确调整了大小(textview 没有从 viewDidLoad 正确调整大小,但它是滚动视图)。

//In View1
-(void) setHeight
{
    NSLog(@"Set height");
    CGRect frame = descriptionTextView.frame;
    frame.size.height = descriptionTextView.contentSize.height;
    descriptionTextView.frame = frame;

    if([[UIScreen mainScreen] bounds].size.height == 568) //iPhone 4inch
    {
        totalHeight = 380+frame.size.height;
        [self.mainScrollView setContentSize:CGSizeMake(320,totalHeight)];
    }
    else{
        totalHeight = 250+frame.size.height;
        [self.mainScrollView setContentSize:CGSizeMake(320,totalHeight)];
    }    
}

问题是我创建了一个自定义标签栏菜单,其中 UIView 是一个占位符。我第一次执行 segue 时它可以工作,但如果我返回并再次按下选项卡,则不会,因为 viewWillAppear 和 viewDidAppear 没有被调用。为什么不叫?我怎样才能强迫他们被召唤?

//In CustomTabBarController
-(void) selectTab{
    self.isLoaded = YES;
    self.activity_indicator.hidden = YES;

    if ([self.selectedButton isEqualToString: @"view1"])
        [self performSegueWithIdentifier:@"sg_view1" sender:self];
    else if ([self.selectedButton isEqualToString:@"view2" ])
        [self performSegueWithIdentifier:@"sg_view2" sender:self];
    else if ([self.selectedButton isEqualToString:@"view3" ])
        [self performSegueWithIdentifier:@"sg_view3" sender:self];

}

【问题讨论】:

    标签: ios view viewdidload viewwillappear viewdidappear


    【解决方案1】:

    最好的方法是使用标签栏委托方法而不是 viewWillAppear:

    - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    
        if ([viewController isKindOfClass:someClass]){
    
             //do your stuff
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-08-26
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 2012-10-31
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多