我在标签栏控制器中有一个视图控制器。当我在“内部”初始化视图时,我希望能够再次按下标签栏项并重新绘制视图。
我的tabbarcontroller是在AppDelegate
中创建的#AppDelegate.m
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
NSString *titleV = viewController.title;
if (titleV == @"Random") {
DetailViewController *detailViewController = [[DetailViewController alloc] init];
[detailViewController reloadView];
}
}
#ViewController.m
-(void)reloadView{
[self.view setNeedsDisplay];
NSLog(@"view updated");
}
//code
- (void)viewDidLoad
{
[super viewDidLoad];
[self checkContent];
NSLog(@"viewDidLoad");
}
//code
-(void)checkContent{
if (theContent==NULL) {
contentText.numberOfLines=0;
contentText.text = randomContent;
NSLog(@"%@", contentText.text);
} else {
contentText.text = theContent;
}
}
从日志中我可以看到contentText.text虽然可见标签没有更新,但直到我移动到另一个视图然后再返回。我不确定为什么这不起作用。关于如何解决这个问题的任何想法都非常感谢。
如果您需要更多代码,我很乐意提供。
干杯, Dubbelsnurr
答案 0 :(得分:0)
我不会将- tabBarController:didSelectViewController
放在appDelegate中,而是将tabBarController子类化并符合UITabBarDelegate
,并从中调用- tabBarController:didSelectViewController
。
这是一个实现类似概念的教程: