执行由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文档 。
希望这会帮助你找出你的问题。 🙂