我定义了一个类NewViewController ,它显示了一个在应用程序中添加新项目的屏幕,它被包装在一个UINavigationController 中。我想在这个 UIViewController 上设置一个 delegate ,我目前在 prepareForSegue 方法中这样做:
UINavigationController *navController = segue.destinationViewController;
NewViewController *newViewController = (NewViewController *)navController.topViewController;
[newViewController setDelegate:self];
这行得通,但我觉得这并不优雅,也不是我应该这样做的方式。获得此结果的最佳方法是什么?
Edit:NewViewController 中的delegate 在NewViewController 中的所有字段都填写完毕并提交后调用。目前,这是唯一来自 NewViewController 的 delegated 。以模态方式显示 NewViewController 的 UIViewController 是设置为 delegate 的内容(在本例中为 self)。
Best Answer-推荐答案 strong>
我认为这种方法很好,尽管您可能需要进行更多的错误检查以防万一。如果这是一个命名的 segue,您可以检查 segue.identifier 以确保这是您期望的 View Controller 。我也会像这样检查类(class):
if ([segue.destinationViewController isKindOfClass:[UINavigationController class]])
{
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
if ([navController.topViewController isKindOfClass:[NewViewController class]])
{
NewViewController *newViewController = (NewViewController *)navController.topViewController;
[newViewController setDelegate:self];
}
}
关于ios - 通过 topviewcontroller 在自定义类上设置委托(delegate)的简洁方法,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/20741619/
|