我定义了一个类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)。
我认为这种方法很好,尽管您可能需要进行更多的错误检查以防万一。如果这是一个命名的 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/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |