我有一个方法可以根据UITextView的内容设置UIScrollView和UITextView的高度。我意识到,当从viewWillAppear调用方法时,textview和scrollview都会正确调整大小,而不是从viewDidLoad调用(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];
}
答案 0 :(得分:0)
最好的方法是使用tab bar委托方法而不是viewWillAppear:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if ([viewController isKindOfClass:someClass]){
//do your stuff
}
}