关于iphone:didSelectRowAtIndexPath中的自定义委托方法

a custom delegate method inside didSelectRowAtIndexPath

我正在尝试在委托方法-(void)TableView:(UITableView*)TableView didSelectorRowatindexPath:(nsIndexPath*)IndexPath内触发自定义委托方法。一切看起来都很好,除了我从未达到我的自定义委托方法,该方法应该通过点击一行来触发。以下是我代表团的执行情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@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];

}

委托的属性定义正确,但在此网站上不可见,因为它将作为标记。

在二等舱是这样的

1
2
3
4
5
@interface ShakeControl : UIViewController

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

}

但在这种情况下,永远也不能真正做到这一点。不知道是什么问题,因为以前经常委派,现在工作很好,几个小时都不工作……任何帮助,都会被感激的。谢谢


你应该这样做:页眉:

1
2
3
4
5
6
7
8
9
@protocol SomeControllerDelegate <NSObject>
@optional
  - (void) somethingSelected: (Anything *)selection;
@end
@interface SomeController : UITableViewController
{
  id <SomeControllerDelegate> delegate;
}
@property (nonatomic, retain) id<SomeControllerDelegate> delegate;

在代码中:

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

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

1
@interface ShakeControl : UIViewController <SomeControllerDelegate>