执行由UITableViewCell调用的Segue

我有一些UIButtons在自定义表格视图单元格按下时,我希望他们调用宿主视图控制器中的细胞所在的表格视图。我现在正在做的是声明一个这样的行动: – (空隙)的动作;

在表视图所在的类中。然后我从这个单元格中调用这个动作:

ViewController *viewController = [[ViewController alloc] init]; [viewController action]; 

但是,当行动被称为它说,没有这样的赛格视图控制器,我知道是不正确的。 从视图控制器本身调用“行动”本身完美,只是不从单元格。

另外,这里是执行segue的代码:

 -(void)action { [self performSegueWithIdentifier:@"action" sender:self]; } 

我怎样才能做这个工作?

任何build议表示赞赏。

更新

我只是试图设置一个委托在这个单元格上:

单元格的头文件:@class PostCellView;

 @protocol PostCellViewDelegate -(void)action; @end @interface PostCellView : UITableViewCell <UIAlertViewDelegate, UIGestureRecognizerDelegate> @property (weak, nonatomic) id <PostCellViewDelegate> delegate; 

而在单元格的主文件中,我将这样的动作称为:[self.delegate action];

并在主持表视图的视图的头我像这样导入单元格:#import“PostCellView.h”

 @interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, PostCellViewDelegate> 

然后在该视图的主文件中,我有单元格操作:

 -(void)action { [self performSegueWithIdentifier:@"action" sender:self]; } 

但是这个行为从来没有执行过,我查了一下。 我从单元格调用动作时logging,我把一个NSLog的行动本身和日志调用它从单元格工作,但不是行动。

我认为你的问题是这个ViewController *viewController = [[ViewController alloc] init]; [viewController action]; ViewController *viewController = [[ViewController alloc] init]; [viewController action]; 您正在启动一个新的ViewController,而不是获取当前的单元格。

也许你可以在单元上设置一个委托,这样单元就有了对viewController的引用

创buildbutton并以编程方式调用其处理程序的简单方法是

 UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect]; [button setFrame:CGRectMake(100, 100, 80, 40)]; [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchDown]; [self.view addSubview:button]; //self.view is the view on which you want to add button 

它的处理程序应该在你的实现文件中像这样定义:

 -(void)buttonClick:(id)sender{ NSLog(@"button clicked"); // your code on click of button } 

你可以检查iOS文档 。

希望这会帮助你找出你的问题。 🙂

Interesting Posts