在用于iPhone的Objective-C编码中使用IBAction和IBOutlet的目的是什么,如果我不使用它会有什么不同吗?
我有一个看起来像这样的视图层次结构:
UIView (A)
UIView > UIImageView
UIView > UIView (B)
UIView > UIView (B) > Rounded Rect Button
UIView > UIView (B) > UIImageView
UIView > UIView (B) > UILabel
Run Code Online (Sandbox Code Playgroud)
我已将手势识别器附加到我的UIView(B).我面临的问题是我没有对UIView(B)中的Rounded Rect Button进行任何操作.singleTap手势识别器捕获/覆盖按钮的Touch Up Inside事件.
我怎样才能使它工作?我认为响应者链层次结构将确保按钮触摸事件将被优先使用,并且它将被触发!我错过了什么?
这是一些相关的代码:
#pragma mark -
#pragma mark View lifecycle (Gesture recognizer setup)
- (void)viewDidLoad {
[super viewDidLoad];
// double tap gesture recognizer
UITapGestureRecognizer *dtapGestureRecognize = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapGestureRecognizer:)];
dtapGestureRecognize.delegate = self;
dtapGestureRecognize.numberOfTapsRequired = 2;
[self.viewB addGestureRecognizer:dtapGestureRecognize];
// single tap gesture recognizer
UITapGestureRecognizer *tapGestureRecognize = …
Run Code Online (Sandbox Code Playgroud) 我遇到了一个问题,我的按钮应该保持"按下",同时它显示从它调用的弹出窗口.Popover是一些过滤器的选择器,过滤器显示在按钮本身上.当我点击它并显示弹出时,无论如何都会取消选择.
我想我必须重新定义它在触摸事件中的行为,并使其不响应标准touch up inside
.然后我想知道其他事件的责任是什么?但是我在iOS库中找不到事件列表,而在StackOverflow中只能找到关于touch up inside
or的不正确行为的问题touch down
.
那么触摸事件之间的区别是什么?
其他IBActions不是由UIButton发送的,对吗?这些事件如何改变UIButton的外观?喜欢highlighted
还是selected
?
我很欣赏关于IBActions的好文章的链接,因为我找不到它.
所以我有一个连接到IBAction的按钮.当我按下按钮时,我想用动画隐藏iOS应用程序中的标签栏.这个[self setTabBarHidden:hidden animated:NO];
或这个[self.tabBarController setTabBarHidden:hidden animated:YES];
不起作用.这是没有动画的代码:
- (IBAction)picture1:(id)sender {
[self.tabBarController.tabBar setHidden:YES];
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激:D
在一些IBAction
我看到:
- (IBAction)pushButton:(id)sender;
Run Code Online (Sandbox Code Playgroud)
该(id)sender
什么时候使用它?
在我的项目中我必须控制40个按钮的动作,但我不想创建40个IBAction,我可以只使用IBAction,怎么样?
比方说,我有一个IBAction,它连接到界面构建器中的UIButton.
- (IBAction)functionToBeCalled:(id)sender
{
// do something here
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中,例如在另一种方法中说,调用IBAction的最佳方法是什么?
如果我试着像这样调用它,我收到一个错误:
[self functionToBeCalled:];
Run Code Online (Sandbox Code Playgroud)
但是,如果我试着像这样打电话(我觉得有点作弊),它运作正常:
[self functionToBeCalled:0];
Run Code Online (Sandbox Code Playgroud)
正确调用它的正确方法是什么?
我正在做另一个iOS应用程序,我想知道是否有任何关于如何命名我可以遵循的操作的命名约定或良好实践.我正在考虑用户例如触摸按钮时调用的函数的名称.
我想动画UICollectionViewCell
调用何时动作.
我已经做UICollectionViewCell
的Interface Builder
,该UICollectionView
还.现在我想indexPath
在我的actionBtnAddToCard
方法中得到正确的答案.
这就是我现在尝试的方式(ProduktViewCell.m中的方法):
- (IBAction)actionAddToCart:(id)sender {
XLog(@"");
// see this line
NSIndexPath *indexPath = ??** how can i access the correct indexPath**??;
SortimentViewController *svc = [[SortimentViewController alloc] initWithNibName:@"SortimentViewController_iPad" bundle:[NSBundle mainBundle]];
[svc.collectionViewProdukte cellForItemAtIndexPath:indexPath];
[svc collectionView:svc.collectionViewProdukte didSelectItemAtIndexPath:indexPath];
}
Run Code Online (Sandbox Code Playgroud)
SortimentViewController是viewController,它继承了UICollectionView.
如何访问正确的indexPath?
更新1:编辑帖子以便更好地理解.
nsindexpath ibaction ios uicollectionview uicollectionviewcell
如果我想以编程方式生成一组按钮然后将这些按钮与IBActions相关联,该怎么办?如果我在Interface Builder中添加按钮很容易,但我不能为这种情况做.
ibaction ×10
ios ×6
iphone ×5
objective-c ×5
uibutton ×2
xcode ×2
button ×1
cocoa-touch ×1
conflict ×1
iboutlet ×1
nsindexpath ×1
sender ×1
uitabbar ×1