objective-c - 结合 UIWindows?

标签 objective-c ios macos

我将向每个窗口添加 50 个窗口,每个窗口有 4 个 UIButtons(带文本)和 1 个 UILabel(也带文本)。我需要这样做吗?有没有更好的办法?

最佳答案

如果可以的话,创建额外的窗口从来都不是一个好主意,尤其是在几乎不需要这样做的 iOS 上。您应该创建一个 UIViewController 子类并将其作为您的 Root View Controller (这已经在单 View 应用程序模板中设置)。然后,创建一个 UIView 的子类——我们称它为“MyQuizView”。 “MyQuizView”应该有一个自定义初始化器,它接受五个 NSString(一个用于问题,四个用于答案)和一个整数来确定哪个答案是正确的。然后 UIViewController 子类可以实例化其中的 50 个 View ,将模型中的值传递给它们,并使它们成为主视图的 subview 。

编辑:这是一个 UIView 子类的自定义初始化程序示例。

- (id) initWithFrame:(CGRect)frame question:(NSString*)ques answers:(NSArray*)ans correctAnswer:(int)correctAns{
    self = [super initWithFrame: frame];
    if (self) {
        self.question = ques;
        self.answers = ans;
        self.correctAnswerNumber = correctAns;
        [self setup];
    }
    return self;
}

自定义初始化程序以 init 开头。它将 self 设置为其父类(super class)的指定初始化程序的返回值,然后,如果 self 不为 nil,它会初始化其状态——通常使用传递的参数来执行此操作。最后它返回 self。这个假设您拥有正确的属性,并在将属性设置为正确的值后调用一个名为 setup 的方法,从而允许您使用它们来创建标签等等。或者,您可以获取传入的值并使用它们立即创建标签和按钮,设置目标操作并将它们放置为 subview ,这样您就不需要将参数保留为属性。每个按钮都可以被赋予一个数字标签,这样您就可以知道答案是否正确(基于传递给初始化程序的整数,您必须将其存储在某个地方)。这完全是凭内存,但希望它是正确的。

关于objective-c - 结合 UIWindows?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13731729/

相关文章:

objective-c - iOS 将 short 转换为长度为 2 的字节

swift - 是否有任何提交催化剂应用程序的指南?

ios - WKInterfaceButton 多行标题

ios - 如何创建一个类别来扩展 CGPaths?

ios - 如何从 UICollectionView 中删除行?

ios - 我在 iOS 上运行 react native 应用程序时遇到奇怪的问题

macos - 在 Sublime Text 3 中执行安全转储信任设置时出错

objective-c - NSTextField 点击率?

ios - 如何检查带小数的 double 是否可整除?

ios - SWRevealViewController 和 TableView - 滑动删除不工作