UIViewController 中的重载数据

Posted

技术标签:

【中文标题】UIViewController 中的重载数据【英文标题】:ReloadData in UIViewController 【发布时间】:2012-06-04 11:06:50 【问题描述】:

调整大小后如何刷新UIViewController 的视图?我需要一个类似于reloadData in UITableViewController 的方法。

是否有其他方法可以在不重新加载的情况下调整 UIViewController 的视图大小?

我的代码是:

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

    orientation = toInterfaceOrientation;
    if(orientation==3 || orientation==4)
    
        heightBoxDimension1 = [GlobalData sharedGlobalData].heightLandscape;
        widthBoxDimension1 = [GlobalData sharedGlobalData].widthLandscapeBig;
        widthBoxDimension2 = [GlobalData sharedGlobalData].widthLandscapeSmall;
    
    else 
    
        heightBoxDimension1 = [GlobalData sharedGlobalData].heightPortrait;
        widthBoxDimension1 = [GlobalData sharedGlobalData].widthPortraitBig;
        widthBoxDimension2 = [GlobalData sharedGlobalData].widthPortraitSmall;
    
    for(UIView* view in self.view.subviews)
    
        NSLog(@"%.0f %.0f %.0f %.0f ", view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height);
        if(view.frame.size.width >400)
        
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, widthBoxDimension1, heightBoxDimension1)];
            NSLog(@"%.0f %.0f %.0f %.0f ", view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height);
        
        else
        
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, widthBoxDimension2, heightBoxDimension1)]; 
            NSLog(@"%.0f %.0f %.0f %.0f ", view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height);
        
    
    [self.view setNeedsDisplay];


我有一类全局变量,我放置视图的静态尺寸,我有两种视图,高度相同但宽度不同。当打开模拟器进入此方法但更改视图框架后,不要重新加载这些视图...

控制台的输出是:

2012-06-05 10:53:09.309 TemplateiPad2[12561:207] 8 8 752 318 
2012-06-05 10:53:09.309 TemplateiPad2[12561:207] 8 8 752 446 
2012-06-05 10:53:09.309 TemplateiPad2[12561:207] 8 334 372 318 
2012-06-05 10:53:09.309 TemplateiPad2[12561:207] 8 334 372 446 

做好重新框架,但不要重新加载。

【问题讨论】:

【参考方案1】:

试试

[self.view setNeedsDisplay];

【讨论】:

【参考方案2】:

这将为您解决问题!

[self.view setNeedsDisplay]; 

【讨论】:

那么您可能在问题描述中遗漏了一些细节,因为从逻辑上讲,它应该为您解决问题。您可以发布问题的代码吗?你是如何调整视图大小的? 好的,我已经上传了我的部分代码。 我不确定是什么问题,但我认为不需要使用 setNeedsDisplay 方法。检查是否有任何关于您正在执行的操作的警告或尝试使用断点对其进行调试,无论控件是否完全符合条件。

以上是关于UIViewController 中的重载数据的主要内容,如果未能解决你的问题,请参考以下文章

为啥情节提要 ui 元素未显示在 xcode 9 中的 UIViewController 上

UIViewControllers 中的 UIViewController

从父 UIViewController 类继承 UI 组件?

iOS8 中的 UIViewController 自动布局

将 UIViewController 的 UI 扩展到子 UIViewControllers

我应该以MVP模式将我的视图投射到iOS上的演示者中的UIViewController吗?