【发布时间】:2011-07-01 08:47:10
【问题描述】:
我正在尝试在委托方法中触发自定义委托方法 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath。一切看起来都很好,只是我从来没有达到我的自定义委托方法,应该通过点击一行来触发。 这是我的委托实现:
@class 设置列表; @protocol SettingsListDelegate - (void)retrieveSettings:(SettingsList*)tableController Nazov:(NSString*)Nazov; @结尾 @interface 设置列表:UITableViewController { 身份代表; } @property (nonatomic, assign) id 委托; @结尾 @synthesize 代表; - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString *Nazov = [NSString stringWithString:[[self displayedObjects] objectAtIndex:indexPath.row]]; NSLog(@"Vybral som %@", Nazov); [委托retrieveSettings:self Nazov:Nazov]; }delegate 的属性定义是正确的,但是由于 它被当作一个标签,所以在这个网站上不可见。
二等舱是这样的
@interface ShakeControl:UIViewController - (void)retrieveSettings:(SettingsList*)tableController Nazov:(NSString*)Nazov{ }但在这种情况下从未真正达到它。不知道出了什么问题,因为以前多次委托并且工作正常,现在卡了几个小时......任何帮助,将不胜感激 ..谢谢
【问题讨论】:
-
你看到“NSLog(@"Vybral som %@", Nazov);"信息?如果你在那里设置一个断点,你能确认 delegate 不是 nil 吗?
-
一个想法:不应该用“self.delegate”代替“delegate”吗?另外,请检查您是否确实在某处分配了委托。
-
确保(使用调试器)委托已分配内存。我认为,它是 0x0,这可能是它没有被调用的原因。而且我没有看到您将对象分配给委托的代码。 (如 self.delegate = 委托)
-
是的,PengOne/Harinder 是对的人,忘记分配将 self 分配给委托属性...谢谢
标签: iphone objective-c delegates uitableview