0

在 FatEditViewController 中,有一个自定义的 UIView。

FatEditViewController.h

#import <UIKit/UIKit.h>

@interface FatEditViewController
@property (weak, nonatomic) IBOutlet UIView *myview;

@end

在另一个 UIViewController 中,我想获取 myview 对象。我喜欢这样:

FatEditViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"FatEdit"];
UIView *view = [vc myview];
NSLog(@"%@, %@", vc,view);

myview 为空。如何获得 myview?

4

1 回答 1

0

这里的问题是只有在调用 FatEditViewController 的方法 viewDidLoad 时才会实例化您的 myview,当然只有当视图控制器出现在屏幕上时才会调用该方法。实现所需的一种可能方法是以编程方式构建 myView(它不再是 IBOutlet),可能通过在 getter 中延迟初始化它。您还必须以编程方式在 viewDidLoad 方法中将视图添加到 FatEditViewController。

-(UIView *)myview
{
    if(!_myview){
        _myview = [[UIView alloc] initWithFrame:whateverFrameYouNeed];
        //build the view
    }
    return _myview;
}

该属性也必须是强大的。

于 2013-05-17T09:48:08.980 回答