覆盖 UIViewController 的 view 属性

Posted

技术标签:

【中文标题】覆盖 UIViewController 的 view 属性【英文标题】:Override UIViewController's view property 【发布时间】:2015-04-23 05:31:43 【问题描述】:

我想重写我的MYViewController : UIViewControllersetView: 方法,这样,我不允许有人将view 的属性设置为nil

-(void)setView:(UIView*)view 
    if (view == nil)
       //ignore - make no change
    else 
       //default performance

我该怎么做?

【问题讨论】:

你真正想要什么?实现设置器? 是的。这样,如果通过了nil,我应该忽略它。 【参考方案1】:

只有当你想要默认行为时才调用超类应该做的工作:

-(void)setView:(UIView*)view 
    if (view == nil) 
       //ignore - make no change
    
    else 
       //default performance
       [super setView:view];
    

【讨论】:

【参考方案2】:
@synthesize view = _view;

-(void)setView:(UIView*)view 
        if (view)
           _view = view;
    

就这么简单。如果view 不为零,则设置变量。

【讨论】:

以上是关于覆盖 UIViewController 的 view 属性的主要内容,如果未能解决你的问题,请参考以下文章

Monotouch:覆盖 UIViewController 方法的正确方法

从 UIViewController 中的 UITableView 中删除核心数据

Swift - UIViewController 与 UITableViewController 中的覆盖函数

如何覆盖 UIViewController 中的“视图”属性?

覆盖 UIViewController 的 view 属性

UIViewController 扩展不允许覆盖 Swift 中的视图相关功能?