gpt4 book ai didi

iphone - 向所有 UIViewController 添加变量

转载 作者:行者123 更新时间:2023-12-03 20:47:04 25 4
gpt4 key购买 nike

我有这个类(我们称之为FooViewController),它是UIViewController的子类。它的行为应该与 UINavigationController 类似,因为有一个 rootController 并且您可以向其中添加其他 UIViewControllerFooViewController 中的每个 UIViewController 都可以创建另一个 UIViewController 并将新的 UIViewController 推送到 FooViewController >.

这是一个例子来说明我的意思。这是当您向项目添加新的 UITableViewController 时自动创建的代码。

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"Nib name" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];

问题是:如何在我的所有 UIViewController 中拥有像 navigationController 这样的变量?就像您可以使用类别向现有类添加方法一样,您也可以向现有类添加变量吗?听起来像 Associative References是我正在寻找的,但它只能在 Mac 上使用。

对我有用的一个解决方案是对我可能使用的所有 UIViewController 进行子类化,并从这些类中删除我的实际类子类。例如,我可能会这样做:

@interface FooUIViewController : UIViewController {
FooViewController *fooViewController;
}

@interface FooUITableViewController : UITableViewController {
FooViewController *fooViewController;
}

这样我就可以这样做:[self.fooViewController PushViewController:detailViewController];。但这似乎是一种肮脏的做法。

我觉得这应该不是一件难事,也许我的想法是错误的。有什么想法吗?谢谢!

最佳答案

不,您不能向 UIViewController 添加实例变量。

子类化并不是一个坏的方法,考虑到它可以做更多与 FooViewController 相关的事情。它不会损害类的设计,因为它们无论如何都依赖于 FooViewController(就像具有 navigationController 属性的 UIViewController 一样)。

另一种方法是通过应用程序委托(delegate)访问 FooViewController 对象。但我认为这是一种肮脏的做法(因为它们现在依赖于您的应用程序委托(delegate))。

关于iphone - 向所有 UIViewController 添加变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5013296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com