Ios Can';无法获取要执行的自定义委托方法
我使用两个视图控制器(故事板)。一个是标准的Ios Can';无法获取要执行的自定义委托方法,ios,delegation,Ios,Delegation,我使用两个视图控制器(故事板)。一个是标准的ViewController,另一个是TableViewController。我在TableViewController中设置了一个自定义协议,这个方法名为didSelectWith,有两个参数,class和一个NSString。它在TableViewControllerdelegate方法didSelectRowAtIndexPath中被调用 其思想是,从第一个视图控制器segue到表视图的一个按钮,获取单元格textlab.text中的字符串,然后
ViewController
,另一个是TableViewController
。我在TableViewController
中设置了一个自定义协议,这个方法名为didSelectWith
,有两个参数,class和一个NSString
。它在TableViewController
delegate方法didSelectRowAtIndexPath
中被调用
其思想是,从第一个视图控制器segue到表视图的一个按钮,获取单元格textlab.text中的字符串,然后返回到第一个视图控制器。然后,它解除表视图控制器,并为该字符串设置一个简单的标签对象。到目前为止,我无法回到第一个视图控制器
以下是来自表视图控制器的代码:
#import <UIKit/UIKit.h>
@class DeparmentsViewController;
@protocol deparmentsDelegate <NSObject>
-(void)didSelectWith:(DeparmentsViewController *)controller department:(NSString *)department;
@end
@interface DeparmentsViewController : UITableViewController
@property (nonatomic, weak) id <deparmentsDelegate> delegate;
@end
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"departmentsSegue"]) {
self.vc = [segue destinationViewController];
DepartmentViewController
self.vc.delegate = self;
}
}
-(void)didSelectWith:(DeparmentsViewController *)controller department:(NSString *)department
{
[controller dismissViewControllerAnimated:YES completion:nil];
self.departmentLabel.text = department;
NSLog(@"Delegate method called within ViewController");
}
以下是来自第一视图控制器的代码:
#import <UIKit/UIKit.h>
@class DeparmentsViewController;
@protocol deparmentsDelegate <NSObject>
-(void)didSelectWith:(DeparmentsViewController *)controller department:(NSString *)department;
@end
@interface DeparmentsViewController : UITableViewController
@property (nonatomic, weak) id <deparmentsDelegate> delegate;
@end
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"departmentsSegue"]) {
self.vc = [segue destinationViewController];
DepartmentViewController
self.vc.delegate = self;
}
}
-(void)didSelectWith:(DeparmentsViewController *)controller department:(NSString *)department
{
[controller dismissViewControllerAnimated:YES completion:nil];
self.departmentLabel.text = department;
NSLog(@"Delegate method called within ViewController");
}
所有必要的插座都相应地连接起来。如果需要更多的代码,我可以尽快编辑这篇文章。do NSLog to log 1。self.vc&2。要记录self.delegate,是否调用了“准备”segue?这是一个推送或模式序列?部门视图控制器行是什么?DepartmentsViewController
是TableViewController
类。它有5个单元,包括人力资源部、办公室、仓库等办公部门。@Wain-这是一个模态序列