Lou*_*ley 3 iphone xcode objective-c ipad ios
我有一个UIButton我以编程方式定义的自定义:
self.hard1 = [UIButton buttonWithType:UIButtonTypeCustom];
[self.hard1 setFrame:CGRectMake(884, 524, 105, 60)]; // set the x,y,width and height
UIImage *buttonImage = [UIImage imageNamed:@"green.jpg"];
self.hard1.layer.cornerRadius = 10;
self.hard1.clipsToBounds = YES;
[self.hard1 addTarget: self
action: @selector(buttonTapped:)
forControlEvents: UIControlEventTouchUpInside];
[self.hard1 setImage:buttonImage forState:UIControlStateNormal];
[self.view addSubview:self.hard1];
Run Code Online (Sandbox Code Playgroud)
因此,它不会在Interface Builder中显示,它只会在我运行应用程序时显示在屏幕上.这意味着我无法通过ctrl +拖动UIButton到a ViewController来选择一个popover segue.我可以在我的代码中调用segue吗?如果没有,我还有其他选择吗?
Blub和tkanzakic的答案不会起作用,因为当你创建segue时,popover segue坚持在故事板中有一个锚视图.而且由于你的按钮还不存在,要做到这一点将会非常棘手.您可以锚定到现有的故事板视图,但弹出箭头在弹出时不会指向右侧对象.您可以在代码中移动现有视图以匹配代码创建按钮的矩形.但你可以完全省去segue并在代码中执行popover.
您需要声明一个popoverController属性:
@property (nonatomic, strong) UIPopoverController* buttonPopoverController;
Run Code Online (Sandbox Code Playgroud)
然后您的按钮操作可能如下所示:
- (void) buttonTapped:(UIButton*) sender
{
ContentViewController* contentVC = [[ContentViewController alloc] init];
self.buttonPopoverController = [[UIPopoverController alloc]
initWithContentViewController:contentVC];
self.buttonPopoverController.delegate = self;
//only required if using delegate methods
[self.buttonPopoverController presentPopoverFromRect:sender.frame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
ContentViewController是您打算转向的视图控制器.如果使用故事板场景配置它,您可能希望在创建它时执行以下操作:
UIStoryboard *storyboard = self.storyboard;
ContentViewController* contentVC =
[storyboard instantiateViewControllerWithIdentifier:@"ContentViewController"];
Run Code Online (Sandbox Code Playgroud)
当您在故事板中选择了相关的视图控制器时,可以使用Identity Inspector设置故事板标识符.
| 归档时间: |
|
| 查看次数: |
4821 次 |
| 最近记录: |