我有ViewController
哪个执行模型类型 segue,另一个UITableViewController
来自底部,它在UITableView
. I want that when any of the category selected it must pass back some data to the sender controller
问问题
1174 次
2 回答
2
将第一个视图控制器设置为 modal 的自定义委托UITableViewController
,您可以在此方法中获取对第一个视图控制器中的UITableViewController
或 的引用,如下所示:UITableView
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"tableviewController"]){
MyTableViewController *myTableViewController = (MyTableViewController *)[segue destinationViewController];
myTableViewController.delegate = self;
}
}
您将需要在表格视图控制器上设置委托回调等和属性。如果您还不知道,应该有很多关于如何做到这一点的指南,这里有一个
于 2012-10-05T10:47:01.937 回答
1
如果这是您的用户可能会在不关闭视图的情况下重复执行的操作,那么您最好的选择可能是发布通知,让发件人注册以收听。
要发布通知,请在更改类别时执行此操作:
NSNotification *aNotification = [NSNotification notificationWithName:categoryChangedNotification object:categoryThatWasChanged];
[[NSNotificationCenter defaultCenter] postNotification:aNotification];
要在发件人中收听它:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_refreshCategories) name:categoryChangedNotification object:nil];
记得适当地 addObserver 和 removeObserver 以免在不必要的时候被观察。
如果用户选择然后关闭视图,返回到发送者视图,你最好制定一个协议,将发送者设置为委托。本质上,在您的 .h 文件中创建了一个协议,如下所示:
@protocol myControllerDelegate
-(void)myControllerFinishedEditingCategories:(id)sender;
@end
然后你需要在同一个控制器中的一个属性:
@property (nonatomic, unsafe_unretained) id<myControllerDelegate> delegate;
使发送视图符合协议:
@interface sendingViewController : UIViewController <myControllerDelegate>
现在,当您完成编辑类别后,您可以在关闭视图之前调用发送方的委托方法:
[delegate myControllerFinishedEditingCategories:self];
于 2012-10-05T11:03:19.567 回答