Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用自定义UIButton以编程方式调用ViewController PopOver_Iphone_Ios_Objective C_Xcode_Ipad - Fatal编程技术网

Iphone 使用自定义UIButton以编程方式调用ViewController PopOver

Iphone 使用自定义UIButton以编程方式调用ViewController PopOver,iphone,ios,objective-c,xcode,ipad,Iphone,Ios,Objective C,Xcode,Ipad,我已经在实现文件的viewDidLoad部分定义了自定义ui按钮的宽度、高度和位置。如果要在IB中拖放此按钮,我可以按住ctrl键并将其拖动到另一个视图控制器,然后选择PopOver 除非有办法将IBOutlet附加到我不知道的自定义ui按钮,因为我的自定义按钮不会显示在界面生成器中,如何在单击我的实现文件中的自定义ui按钮的操作中调用ui视图控制器的PopOver 这是我如何定义自定义按钮的: self.hard1 = [UIButton buttonWithType:UIButtonType

我已经在实现文件的
viewDidLoad
部分定义了自定义
ui按钮的宽度、高度和位置。如果要在IB中拖放此按钮,我可以按住ctrl键并将其拖动到另一个视图控制器,然后选择
PopOver

除非有办法将
IBOutlet
附加到我不知道的自定义
ui按钮
,因为我的自定义按钮不会显示在界面生成器中,如何在单击我的实现文件中的自定义
ui按钮
的操作中调用
ui视图控制器的
PopOver

这是我如何定义自定义按钮的:

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];

如果我理解正确,您的自定义按钮是UIButton的一个子类。因此,在IB中,在正确的位置放置一个常规按钮,然后导航到右侧窗格中的Identity inspector,并在class字段中输入自定义按钮类名,以便IB按钮成为CustomUIButton。你把其他的一切都当作是普通的按钮

必须在视图控制器的.h文件中导入自定义类


希望有帮助。

通过interface builder将动作
触碰内部连接到方法
按钮标记:
。 这样做

  • 右键单击界面向导上的按钮
  • 在窗口中,将显示操作列表
  • 单击并拖动touchUpInside并将其放置在viewcontroller对象上
  • 然后另一个窗口显示这些方法,并将其与所需的方法连接起来
经历这一切

编辑:

  [hardButton1 addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
self是您定义方法按钮按下的位置:

编辑2:

从评论来看,我认为问题可能在于按钮图像 或帧。为图像设置背景色并进行测试。同时检查是否设置了正确的图像名称和扩展名。放置断点并测试如果按钮可见,是否会点击该方法

- (IBAction) buttonTapped:(id) sender
{
    [self performSegueWithIdentifier:@"mySegue" sender:self];
}
其中,
mySegue
是一个popover segue,您已将它从包含的viewController拖到要弹出的viewController。您创建segue,然后在IB中的segue的“Identifier”框中键入一个名称,然后在此处使用与我放置的“mySegue”相同的名称



我已经按了两个按钮,你必须按下才能看到这个显示;然后,您只需选择您想要处理的序列。您可以在图片中选择它(单击箭头中间),也可以在故事板中的项目列表中选择。

我的按钮称为hardButton1,如果我在类字段中输入它,它只保留与普通按钮相同的属性,而不是我在实现文件中编写的属性。感谢您的回复。好的,伙计,那么请确保您没有拼错您重写的方法,并且它们在.h文件中声明。我可以在界面生成器中引用ViewController吗?或者我必须以编程方式定义一个布局?您可以在ViewController上使用方法
initWithNibName:
调用使用IB设计的特定布局。我不确定我是否明白你想要什么。也许如果你退一步,在更高的层次上进行描述?我如何像你在那张图片中那样更改IB的属性?我对图片进行了一些扩展,并试图在回答中进行解释。对不起,Bryan,非常感谢你的帮助。我现在收到一个错误“Popover segue with no anchor”,我通过编程定义了我的按钮,因此只有当它运行应用程序时,它才会显示在界面生成器中。这就是我所做的,我仍然不知道如何使用界面生成器在我的按钮没有显示时执行此操作“按钮没有出现在那里?你这是什么意思?你能解释一下吗?我在我的实现文件中定义了UIButton,我在屏幕上设置了宽度、高度和位置,这样我在运行应用程序时就能看到它,但是我在界面构建器中看不到它。你必须在IB中添加一个按钮,并使其自定义类成为你的按钮类。请参阅实现不会将按钮引入IB。我们必须添加它并连接它,以使编译器知道IB中的这个按钮代表类中的引用。为此,我们使用IBoutlets,你是否询问故事板segue?是的,我是,我可以在我的代码中使用它们吗?我已经编辑了我的答案,以展示如何以编程方式调用segue,但我真的不明白你的按钮有什么自定义的。为什么你不能用IB把它放进去呢?因为我在一定条件下改变了它的颜色,所以很不幸我不得不对它进行编码。非常感谢您的帮助,您能澄清一下我将segue拖到了什么位置吗?将segue拖到您想要的popover视图中。就像从按钮执行操作一样,只有没有按钮,因此必须从ViewController执行。