无法获取要执行的自定义委托方法

时间:2014-03-22 12:44:00

标签: ios delegation

我正在使用两个视图控制器(故事板)。一个是标准ViewController,另一个是TableViewController。我在TableViewController中设置了一个自定义协议,这是一个名为didSelectWith的方法,包含两个参数,即类NSString。它会在TableViewController委托方法didSelectRowAtIndexPath中调用。

这个想法是从第一个视图控制器的一个按钮转到表视图,将字符串取在单元格textLabel.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

#pragma mark - Table view delegate method

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"didSelectRowAtIndexPath has executed");
    [self.delegate didSelectWith:self department:[self.tableView cellForRowAtIndexPath:indexPath].textLabel.text];
}

以下是第一个视图控制器的代码:

-(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");
}

所有必要的商店都相应地联系在一起。如果需要更多代码,我可以尽快编辑这篇文章。

0 个答案:

没有答案