我有非常简单的UIView创建框,但是UIView根本没有显示,这是我sharingButtons.m
上的代码
-(void)createContainer{
winWidth = [UIScreen mainScreen].bounds.size.width;
buttonContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, winWidth, 20)];
buttonContainer.backgroundColor = [UIColor redColor];
[self.view addSubview:buttonContainer];
}
-(void)createButton{
[self createContainer];
}
这是我的sharingButtons.h
@interface SocialSharing : UIViewController {
int winWidth;
}
- (void)createButton;
- (void)createContainer;
#pragma mark - Properties
@property(nonatomic, strong) UIView* buttonContainer;
@end
在createButton
MyViewControler.m
调用viewDidLoad
方法
我的代码有问题吗?
这是MyViewControler.m上的代码
- (void)loadSocialSharingButton {
socialButtons = [[SocialSharing alloc] init];
[socialButtons createButton];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self loadSocialSharingButton];
}
对不起,我只是了解对象:)
非常感谢
答案 0 :(得分:3)
您的buttonContainer
不可见的原因是,它未加载到您的视图层次结构中。
要使其可见,您应将其添加为子视图。在MyViewController.m
viewDidLoad
中[self loadSocialSharingButton];
[self.view addSubview:socialButtons.buttonContainer];
希望这有帮助!
答案 1 :(得分:1)
您的SocialSharing
是 UIViewController 的子类。
您将buttonContainer view
添加到此SocialSharing Controller
,如果您只是致电
socialButtons = [[SocialSharing alloc] init];
[socialButtons createButton];
所以,你看不到任何东西。
答案 2 :(得分:1)
您目前是@ MyViewController但是您正在加载自定义视图@ SocialSharing ViewController,两个ViewController都是截然不同的,您不能通过初始化将社交共享中的自定义视图提供给MyViewController。
您已将SocialSharing类更改为UIView的子类并初始化此视图并添加到MyViewController的子视图中。
SocialSharing.h
@interface SocialSharing : UIView {
int winWidth;
}
- (instancetype)createButton;
#pragma mark - Properties
@property(nonatomic, strong) UIView* buttonContainer;
@end
SocialSharing.m
- (instancetype)createButton
{
winWidth = [UIScreen mainScreen].bounds.size.width;
self = [super initWithFrame:CGRectMake(0, 0, winWidth, 20)];
if (self) {
buttonContainer = [[UIView alloc] initWithFrame:];
buttonContainer.backgroundColor = [UIColor redColor];
[self addSubview:buttonContainer];
}
return self;
}
MyViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
[self loadSocialSharingButton];
}
- (void)loadSocialSharingButton {
socialButtons = [SocialSharing alloc] createButton];
[self.view addSubView:socialButtons];
}
答案 3 :(得分:1)
在iOS应用中,一次只有一个ViewController
处于活动状态。当你在MyViewController
时,MyViewController
处于活动状态,如果你想要导航到任何其他视图控制器而不是你需要呈现或推送它的实例。这样做会使另一个视图控制器处于活动状态。
在您的情况下,问题是SocialSharing
是UIViewController
的子类,因为它创建为SocialSharing : UIViewController
并且它不活动,因此在其上添加任何视图都不会显示因为SocialSharing
的实例不是pushed/ presented
。如果您需要显示来自SocialSharing的视图,则可以将其从UIView
子类化,或者推送/显示SocialSharing
的实例,以使其视图处于活动状态且可见。