屏幕旋转时 ReloadData()

Posted

技术标签:

【中文标题】屏幕旋转时 ReloadData()【英文标题】:When screen rotation ReloadData() 【发布时间】:2015-01-20 13:43:29 【问题描述】:

当你转动我的设备屏幕时,我无法更新我的自定义视图。

我尝试过这样做:

override func viewDidLoad() 
        super.viewDidLoad()


       var myCustomView = Customview()

       self.view.addsubview(myCustomView)
        
    

    override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) 

        // Reload Data here

        self.view.reloadData() // Incorrect

    

但是让我出错:

“UIView”方法没有名为 reloadData 的方法

【问题讨论】:

【参考方案1】:
override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) 

    // Reload Data here

    self.view.reloadData() // Incorrect


UIView 不是 UITableView 它没有开箱即用的 reloadData 方法。

你可以手动实现这个方法->玩得开心:)

【讨论】:

【参考方案2】:

您想在您的UITableView 实例上调用reloadData()(假设有)。 UIView 没有提供这样的方法。

编辑要在屏幕方向改变时得到通知,设置通知:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "didRotate:", name: UIDeviceOrientationDidChangeNotification, object: nil)

并实现选择器,例如

func didRotate(notification: NSNotification)

    myTableView.reloadData()

【讨论】:

旋转屏幕时如何调用reloadData? 但是 OP 在他的问题中没有提到 tableViews 这只是一个假设(我也注意到了)。他要了reloadData,我给了他。 我喜欢你的方法 :) 我的意思是我只是在寻找问题以找到 tableView 并没有找到! @user3351949 你可以投票,这比评论更有价值;)【参考方案3】:

我认为这对你有用

objective-C

[self.view setNeedsDisplay];

迅速

self.view.setNeedsDisplay()

override func viewDidLoad() 
    super.viewDidLoad()
    
    
    var myCustomView = Customview()
    
    self.view.addsubview(myCustomView)


override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) 
    
    // Reload Data here
    
    self.view.setNeedsDisplay()
    

【讨论】:

不,这不起作用。当我打开我的设备布局时,我的设备布局没有重新生成,你会看到邪恶

以上是关于屏幕旋转时 ReloadData()的主要内容,如果未能解决你的问题,请参考以下文章

UIToolbar 在屏幕顶部时无法正确旋转

iOS学习笔记— 屏幕旋转

屏幕旋转后按钮消失

旋转相机时 DirectX 基元不会在屏幕上移动

UICollectionView 不会在屏幕旋转时更新其布局

可以让屏幕上的元素立即旋转