我是iOS新手,遇到问题时尝试将值从TableView传回到主控制器。respondsToSelector:不适用于委托
,我的工作对这种情况的出现
- 家庭控制器上有一个按钮
- 点击按钮,打开第二UIViewController中的项目清单
- 用户从列表
- 选择一个项目选定的项目被添加到家庭控制器上的另一个列表
真的很感谢任何指针,这是苏:
这是我正在准备Segue公司家用
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
UIViewController *destination = segue.destinationViewController;
if ([destination respondsToSelector:@selector(setDelegate:)]) {
[destination setValue:self forKey:@"delegate"];
}
}
SecondController有代表的ID,所以我假设委托设置为“respondsToSelector
”返回“setDelegate”
现在,SecondController当用户选择一个项目我打电话didSelectRowAtIndexPath
& viewWillDisappear
方法来设置项目,使视野中消失:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
POSAllItemsCell *cell = (POSAllItemsCell *) [tableView cellForRowAtIndexPath:indexPath];
item = [NSDictionary dictionaryWithObjectsAndKeys:cell.name, @"Name", cell.price, @"Price", cell.code, @"Code", nil];
[self dismissViewControllerAnimated:YES completion:NULL];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if ([delegate respondsToSelector:@selector(setSelection:)]) {
[delegate setValue:item forKey:@"selection"];
}
}
现在,这里的问题是,对于respondsToSelector
回报setSelection
虚假的,即使我有我的HomeController为setSelection方法:提前
- (void) setSelection:(NSDictionary *)dict {
if (![dict isEqual:selection]) {
......
}
}
道歉,如果我在不清晰的问题,或者格式不正确。顺便说一句,这是为iOS 5和Xcode 4.2
显示你如何宣布“家”视图控制器的委托。 – omz 2013-04-26 21:59:14
嗯,我可能在这里错过了一些东西,但我认为在应用程序启动时为我创建了代理“自动”。这是我如何在“第二个”控制器中声明的:@property(weak,nonatomic)id delegate; – Vivek 2013-04-26 22:04:27
如果您登录委托,它是否为零? – rdelmar 2013-04-26 22:05:09