ios - 考虑 iOS UI 初始化的推荐方法是什么?

标签 ios objective-c ios7 uikit

<分区>


想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它.

关闭 9 年前

在 iOS View Controller 中,我通常有如下代码:

- (void)viewDidLoad
{
    UIScrollView *scrollView = [[UIScrollView alloc] init];
    // [several lines of code to configure the view]
    [self.view addSubview:scrollView]
}

这往往会变得困惑,所以我添加了一个辅助方法(例如 createScrollView )来分配、初始化和配置 View 。这是构建 View 的既定模式吗?是否有命名辅助方法的约定?我注意到的一件事是这个名字 initScrollView由于 ARC 而不允许。

最佳答案

这是我遵循的模式:

init/initWithFrame:中创建对象,并设置在此 Controller 生命周期内永远不会改变的任何属性:

- (instancetype) init {
    self = [super init];

    if (self) {
        _textField = [UITextField new];
        _textField.keyboardType = UIKeyboardTypeEmailAddress;
    }

    return self;
}

如果您想将它们分离到诸如 createTextFields 等方法中,那很好,但如果您可以在一个地方看到实例化的所有内容的列表,则调试起来会更容易。

viewDidLoad中,设置 View 层次结构:

- (void) viewDidLoad {
    [self.view addSubview:self.textField];
}

viewWillLayoutSubviews 中,设置框架(如果您不使用自动布局):

- (void) viewWillLayoutSubviews {
    self.textField.frame = CGRectMake(10, 44, 320, 50);
}

此方法将使您成功处理 View 大小调整和旋转事件。

关于ios - 考虑 iOS UI 初始化的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20110936/

上一篇:ios - 继承和扩展框架类的问题

下一篇:ios - 如何实现 UIApplicationDelegate 的协议(protocol)方法?

相关文章:

ios - 如果显式实现一个 getter,是否仍然创建了 ivar?

ios - UIbutton在点击后改变颜色

ios - 设置编译器标志 Xcode

当我按下主页按钮然后恢复它时,ios7 应用程序崩溃

ios - iOS 每 x 秒更新一次位置

ios - 如果条件 swift ,如何检查零字符串

objective-c - 不同的 int 值还是相同的? NSLog 的 EXC_BAD_ACCESS

objective-c - 在 iOS 8 的自定义键盘中使用 deleteBackward 删除整个单词

ios7 - 我可以 'flush' UIGestureRecognizer 事件吗?

ios - 我们在哪里注销在viewDidload中注册的通知?