对于一个项目,我需要能够从" secondTableViewController" to" firstTableViewController"。我跟随了一些关于代表的教程,但我似乎无法让它发挥作用。当我想从secondTableViewController调用firstTableViewController中的方法时,我会检查是否"委托"属性是空的,每次都是..
这是我的代码:
SecondTableViewController.h
@protocol SendStatusDelegate <NSObject>
@required
-(void)didStatusChanged;
@end // eof delegate protocol
@interface SecondTableViewController : UITableViewController
@property (nonatomic, assign) id<SendStatusDelegate> delegate;
@end
SecondTableViewController.m
// Status is changed on row click
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.delegate) { // This is never called because delegate looks to remain empty
[self.delegate didStatusChanged];
}
}
FirstTableViewController.h
@interface FirstTableViewController : UITableViewController <SendStatusDelegate>
@end
FirstTableViewController.m
这里唯一要做的就是实现 - (void)didStatusChanged方法。
答案 0 :(得分:1)
首先,当您初始化delegate
时,您需要在FirstTableViewController
中将SecondTableViewController
设置为自我。在didSelectRowAtIndexPath:
上说你在这种情况下调用SecondTableViewController
,
FirstTableViewController.m
// Status is changed on row click
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
SecondTableViewController *secondTableVC = [SecondTableViewController alloc] init];
secondTableVC.delegate = self;
}
答案 1 :(得分:0)
在您创建FirstTableViewController
实例的SecondTableViewController
中,您应该将创建的实例的委托分配给FirstTableViewController
即
secondTableViewControllerInstance.delegate = self;
FirstTableViewController
中的
答案 2 :(得分:0)
您的FirstTableViewController
班级应符合SendStatusDelegate
赞
@interface FirstTableViewController : UITableViewController <SendStatusDelegate>
然后分配delegate
SecondViewController
self
实例SecondTableViewControllerInstance.delegate = self;
赞
{{1}}