gpt4 book ai didi

ios - 创建 UIViewController 的子类

转载 作者:行者123 更新时间:2023-11-29 02:00:50 25 4
gpt4 key购买 nike

我有一个关于子类化 UIViewControllers 的基本问题,但似乎无法在这里找到答案。我的应用程序有一个 UINavigationViewController,我计划有多个 View (按顺序)。我的第一个 ViewController 是一个带有 UITableViewDatePickerUIPickerController View 的自定义 ViewController等等

我想对所有后续 View 使用相同的ViewController(我猜是一个子类?)。我想使用我在 Storyboard中构建的相同布局。目前,我的代码布局如下:在 viewDidLoad 中,我从 plist 中读取一个数组,并填充表格和内容的其余部分。

正如您所想象的,我试图避免复制粘贴、重复代码以及同时更改所有 View 的简单方法。

我知道这应该是相当微不足道的,但我不知道我需要做出哪些改变。另外,我应该使用 xib 创建一个 ViewController 吗?有没有办法将我的 CustomViewController 拖到 Xcode 右侧出现的列表中?

最佳答案

我认为您应该创建一个“基本” View Controller 来收集所有重复的方法和属性。它将继承自 UIViewControll,但所有其他 Controller 将从 base 继承。

您可以在 Storyboard中复制粘贴相同的 View 并与基类中的 socket 连接,但是如果您需要更改某些内容,您将会遇到问题。所以我建议您以编程方式创建它(我认为 xibs 已经是一个过去),或者将其替换为另一个小的 View Controller ,然后使用 View Controller 的容器来加载它。 enter image description here

如果您有一些重复但不在每个 Controller 中的内容,您可以在基类中创建自己的选项,如下所示:

typedef NS_OPTIONS(NSUInteger, BaseOptions) {
BaseOptionsNone = 0,
BaseOptionsTableView = 1 << 0,
BaseOptionsDatePicker = 1 << 1,
BaseOptionsSomethingElse = 1 << 2
};

@interface BaseViewController : UIViewController

@property (nonatomic) BaseOptions options;

@end

@implementation BaseViewController

- (void)setOptions:(BaseOptions)options {
_options = options;

if (self.options & BaseOptionsTableView) {
// add table view
}
if (self.options & BaseOptionsSomethingElse) {
// another staff
}
}

@end

然后将选项设置到子类中:

@interface CustomViewController : BaseViewController

@end

@implementation CustomViewController

- (void)viewDidLoad {
[super viewDidLoad];

self.options = BaseOptionsTableView | BaseOptionsSomethingElse;
}

@end

玩得开心:)

关于ios - 创建 UIViewController 的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30413135/

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