Ios 单击单元格中的按钮添加新的单元格行
我用自定义类将Ios 单击单元格中的按钮添加新的单元格行,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我用自定义类将UITableViewCell子类化。并增加了一些渠道。现在我想在我的单元格中获得iActionon按钮。如何在ViewContoller内部定义iAction 例如,您可以创建所需的任何点击处理程序 #define handle_tap(view, delegate, selector) do {\ view.userInteractionEnabled = YES;\ [view addGestureRecognizer: [[UITapGestureRecognizer al
UITableViewCell
子类化。并增加了一些渠道。现在我想在我的单元格中获得iAction
on按钮。如何在ViewContoller
内部定义iAction 例如,您可以创建所需的任何点击处理程序
#define handle_tap(view, delegate, selector) do {\
view.userInteractionEnabled = YES;\
[view addGestureRecognizer: [[UITapGestureRecognizer alloc] initWithTarget:delegate action:selector]];\
} while(0)
稍后在代码中:
SEL sel = @selector(actionOfMine:);
handle_tap(btnbck, self, sel);
要处理它:
-(void) actionOfMine:(UITapGestureRecognizer *)recognizer {
UIView * button = (UIView *) recognizer.view;
int i = (int)button.tag;
//...
}
例如,可以创建所需的任何tap处理程序
#define handle_tap(view, delegate, selector) do {\
view.userInteractionEnabled = YES;\
[view addGestureRecognizer: [[UITapGestureRecognizer alloc] initWithTarget:delegate action:selector]];\
} while(0)
稍后在代码中:
SEL sel = @selector(actionOfMine:);
handle_tap(btnbck, self, sel);
要处理它:
-(void) actionOfMine:(UITapGestureRecognizer *)recognizer {
UIView * button = (UIView *) recognizer.view;
int i = (int)button.tag;
//...
}
不能在视图控制器类中创建单元格的出口,因为动态创建了单元格的不同实例,这确实需要每个单元格的不同出口连接。 您可以做的是创建一个自定义单元格类的委托,并在方法CellForRowatinex中将其设置为视图控制器实例。 然后,当按钮的操作被触发时,您可以调用委托方法并将控件转移到视图控制器实例 注意:请分享您的场景以获得进一步帮助
感谢您不能在视图控制器类中创建单元格的出口,因为单元格的不同实例是动态创建的,这确实需要每个单元格的不同出口连接。 您可以做的是创建一个自定义单元格类的委托,并在方法CellForRowatinex中将其设置为视图控制器实例。 然后,当按钮的操作被触发时,您可以调用委托方法并将控件转移到视图控制器实例 注意:请分享您的场景以获得进一步帮助
谢谢如果在视图控制器中添加处理程序,那么它将打破MVC模式。视图上的事件应该在视图本身内处理。但是,您可以为视图创建委托,并从按钮操作处理程序本身调用要调用的方法
此外,由于在XIB中,您将指定outlet类作为UITableViewCell子类。因此,只有这个子类能够处理您的事件。如果在视图控制器中添加处理程序,那么它将打破MVC模式。视图上的事件应该在视图本身内处理。但是,您可以为视图创建委托,并从按钮操作处理程序本身调用要调用的方法
此外,由于在XIB中,您将指定outlet类作为UITableViewCell子类。因此,只有这个子类才能处理您的事件。另一种方法是您可以在UITAbleviewCell类中声明一个块,如:
var block_CheckBox: (() -> ())!
假设按钮具有如下操作:
@IBAction func didActButton_CheckBoxClicked(_ sender: AnyObject)
{
if block_CheckBox != nil{
block_CheckBox()
}
}
按下按钮时,我们称之为块
在Controller
类中,可以将块定义为:
cell.block_CheckBox = {
()in
//Do required action
}
该块仅在您按下按钮时调用。另一种方法是您可以在UITAbleviewCell类中声明块,如:
var block_CheckBox: (() -> ())!
假设按钮具有如下操作:
@IBAction func didActButton_CheckBoxClicked(_ sender: AnyObject)
{
if block_CheckBox != nil{
block_CheckBox()
}
}
按下按钮时,我们称之为块
在Controller
类中,可以将块定义为:
cell.block_CheckBox = {
()in
//Do required action
}
只有当您按下按钮时,该块才会调用。如果普通C函数可以实现相同的功能,请不要使用宏。添加宏将不必要地使事情复杂化。此外,这种方法将打破MVC模式。请更详细地描述您的意思。此实现工作正常,易于使用,无内存泄漏。我没有发现这种解决方案有任何缺点。此外,这确实有助于以编程方式添加任何点击。@Saranjith,如果有帮助,请批准。如果普通C函数可以实现同样的效果,请不要使用宏。添加宏将不必要地使事情复杂化。此外,这种方法将打破MVC模式。请更详细地描述您的意思。此实现工作正常,易于使用,无内存泄漏。我没有发现这种解决方案有任何缺点。此外,这确实有助于以编程方式添加任何点击。@Saranjith,如果有帮助,请批准。使用此方法,按钮不再是单元格的一部分,而是成为视图控制器的一部分。使用此方法,按钮不再是单元格的一部分,而是视图控制器的一部分。请给我目标Cversion@Saranjith请阅读本教程以使用Objective-c中的块。你能给我目标C吗version@Saranjith请阅读本教程以使用Objective-c中的块。