首页 文章

didSelectRowAtIndexPath中的自定义委托方法

提问于
浏览
1

我试图在委托方法中触发自定义委托方法 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath . 一切看起来都很好,除了我从未达到我的自定义委托方法,应该通过点击一行来触发 . 这是我的授权实施:

@class SettingsList;
@protocol SettingsListDelegate

- (void) retrieveSettings:(SettingsList*)tableController Nazov:(NSString*)Nazov;

@end


@interface SettingsList : UITableViewController {

    id        delegate;
}

@property (nonatomic, assign) id              delegate;

@end


@synthesize delegate;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSString *Nazov = [NSString stringWithString:[[self displayedObjects] objectAtIndex:indexPath.row]];

    NSLog(@"Vybral som %@", Nazov);
    [delegate retrieveSettings:self Nazov:Nazov];

}

委托的属性定义是正确的,但由于<>它作为标记,因此在此网站上不可见 .

在第二堂课就是这样

@interface ShakeControl : UIViewController 

- (void) retrieveSettings:(SettingsList*)tableController Nazov:(NSString*)Nazov{

}

但在这种情况下永远不会达到它 . 不知道出了什么问题,因为之前多次委托使用并且工作正常,现在已经坚持了好几个小时...任何帮助,将不胜感激..谢谢

1 回答

  • 2

    你应该这样做:在 Headers 中:

    @protocol SomeControllerDelegate <NSObject>
    @optional
      - (void) somethingSelected: (Anything *)selection;
    @end
    @interface SomeController : UITableViewController
    {
      id <SomeControllerDelegate> delegate;
    }
    @property (nonatomic, retain) id<SomeControllerDelegate> delegate;
    

    在代码中:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
      [self.delegate somethingSelected:(Anything *)data];
    }
    

    在另一个类 - 添加到定义:

    @interface ShakeControl : UIViewController <SomeControllerDelegate>
    

相关问题