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> |