-2

一个问题的简短介绍
我申请了一个 iOS 开发者的职位。对于这个职位,他们不需要 Objective-C 或 iOS 开发知识。必备条件是具有 C/C++ 和 Linux 平台开发的良好经验。

问题:
面试结束后我接到了一个任务(用很容易影响的词,是吗?),我不明白是不是这样。
面试官向我展示了他 iPhone 上的一个应用程序,它看起来像: 在此处输入图像描述

按下/拖动该按钮会导致出现这样的栏:

在此处输入图像描述

他可以滚动它并在屏幕上拖动。当他按下控制按钮时,bar消失了。

我想提前找借口,因为我觉得自己是一个希望自己的工作被别人完成的人。但我只想了解如何解决这个问题。Cocoa 库对我来说是一头大而新的野兽。最好使用其中的哪些类/元素来实现这一目标?我以前用 Qt、Tkinter、WinAPI(gui 编程)为桌面编程,但在这里对我没有多大帮助。
我需要像面试官向我展示的那样编写类似的代码。我试图在互联网上找到类似的东西,但没有成功。

所以,我只想知道在 Cocoa 库中寻找哪些类更好。而且,如果我没有考虑到某些事情,我会很高兴(高兴)听到你的笔记。

提前感谢您的任何回复!

解决
了我要感谢所有回复并没有让我沉入这片未知海洋的人。
经过一周的探索,我得到了我想要的:

在此处输入图像描述

源代码:(我很抱歉,但我无法从虚拟 mac os 机器复制粘贴代码)

在此处输入图像描述 在此处输入图像描述

现在我明白我的问题是多么的宽泛和愚蠢,但无论如何,它也许可以帮助某人开始。还有一本书对我帮助很大。

4

5 回答 5

4

对Objective-C没有要求,但面试官要你创建一个简单的应用程序并返回给他?有趣的采访。

至于你的问题。我在这里看到需要的类(除了您选择的 AppDelegate 和 UIViewController )是:

UIButton

UIScrollView

UIImageView

按钮在这里的使用是显而易见的。滚动视图再次明显。imageview 将是滚动视图内的图标。

于 2013-02-25T15:49:40.463 回答
1

好的 - 只是为了给你一些关于从什么开始以及如何进行的指导,这样你就不会迷失在可可的广阔世界中......假设你熟悉编程并且在这方面有一些体面的经验c++和java世界...

打开xcode。选择基于空白视图的应用程序。单视图应用程序就可以了。选择自动引用计数 (ARC)。

xcode 使用应用程序委托为您创建一个模板(此任务不需要)

为 iPhone 视图创建了一个视图控制器和一个 xib/nib 文件。(如果有,请忽略 ipad 视图)。

添加到您的视图控制器中,即所谓的 IBAction 方法。一个用于顶部按钮,一个用于其他按钮。当按下按钮(以及您不需要的其他事件)时,应该调用一个动作。

正确定义您将在编辑 xib 文件时在界面构建中看到该操作。添加一个按钮并将其与此操作相关联(我认为最好在内部进行修饰)。

编译这个。当你的按钮被按下时,动作就会被执行。在那里设置一个断点以确保它被调用。

现在,在此操作中,您可以调用新创建的方法 showScroller 和 hideScroller。并创建这些方法。

现在它变得有点复杂了。在 showScroller 你必须...

  1. 创建一个 UIScrollView。(分配它并初始化它)
  2. 创建一些 UIButtons。(没有在objective-c中初始化的alloc)
  3. 将您的第二个 IBAction 方法设置为按钮的目标。
  4. 相应地在 UIScrollView 中定位按钮。
  5. 将 UIScrollView 放置在顶部按钮下方。
  6. 将 UIButtons 作为子视图添加到滚动视图的内容视图中。
  7. 将滚动视图作为子视图添加到 self.view (即底层视图,界面构建器中的灰色事物)。

在 hideScroller 中,您必须...

  1. 从视图中删除 UIScrollView。为此,您可以从 self.view 中删除所有子视图,或者您必须在视图控制器中的某个实例变量中保留对滚动视图的引用。与您已经知道的 C++ 和 Java 非常相似。

作为上述方案的替代方案,您可以在界面构建器中创建所有视图,并将滚动视图预定义为隐藏在 IB(界面构建器)中,而在 showScroller 和 hideScroller 中,您只需将其 .hidden 属性设置为 YES 或 NO。但是我有一种胆量,以您的背景,您应该并且可以以编程方式执行此操作,而不是为 IB 如何连接到您的代码而烦恼。如果您真的遇到了该陷阱并且没有将最顶部的按钮正确连接到您的代码,那么也可以通过编程方式创建该按钮。

啊,我忘记了。创建所有这些 UI 元素的正确位置是 ViewController 类的 viewDidLoad 方法。在您的空 xcode 模板中已经生成了一个空的。只需在[super viewDidLoad];通话后启用它。

于 2013-02-25T16:19:47.403 回答
1

干得好:

  1. 打开 XCode 并创建一个新项目。选择 iOS 空应用程序模板。

  2. 转到菜单,选择文件、新建文件、Objective-C 类。将其命名为 RootViewController 并选择一个子类作为 UIViewController

  3. 转到您的应用委托 .m 文件(如果您的项目名称为 Test,则此文件为 TestAppDelegate.m)。在文件顶部,在 #import "TestAppDelegate.h" 行下方添加另一行 #import "RootViewController.h"

  4. 在同一个文件中有一个名为:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    在方法结束但在返回 YES 之前;语句添加以下行:
    self.window.rootViewController = [[RootViewController alloc] init]; 

  5. 现在转到您在步骤 2 中创建的 RootViewController.m 文件。并在文件顶部编辑界面以具有这个实例变量:

    @interface RootViewController ()
    {
        UIView *menuView;
    }
    @结尾

  6. 在同一个文件中找到名为 - (void)viewDidLoad 的方法并在其中添加以下代码:

    - (void)viewDidLoad
    {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor =[UIColor blackColor];
    UIButton *menuButton = [UIButton buttonWithType:UIButtonTypeCustom]; menuButton.frame = CGRectMake(100, 60, 50, 50); [menuButton setBackgroundImage:[UIImage imageNamed:@"menu.png"] forState:UIControlStateNormal]; [menuButton addTarget:self action:@selector(menuButtonTapped:) forControlEvents:UIControlEventTouchDown];
    CGRect menuFrame = CGRectMake(20, menuButton.frame.origin.y + 50, 300, 60); menuView = [[UIView alloc] initWithFrame:menuFrame]; menuView.backgroundColor = [UIColor purpleColor]; menuView.hidden = YES;
    UIButton *menuButtonA = [UIButton buttonWithType:UIButtonTypeRoundedRect]; menuButtonA.frame = CGRectMake(5, 5, 50, 50); [menuButtonA setTitle:@"A" forState:UIControlStateNormal]; [menuView addSubview:menuButtonA];
    UIButton *menuButtonB = [UIButton buttonWithType:UIButtonTypeRoundedRect]; menuButtonB.frame = CGRectMake(65, 5, 50, 50); [menuButtonB setTitle:@"B" forState:UIControlStateNormal]; [menuView addSubview:menuButtonB];
    UIButton *menuButtonC = [UIButton buttonWithType:UIButtonTypeRoundedRect]; menuButtonC.frame = CGRectMake(125, 5, 50, 50); [menuButtonC setTitle:@"C" forState:UIControlStateNormal]; [menuView addSubview:menuButtonC];
    UIButton *menuButtonD = [UIButton buttonWithType:UIButtonTypeRoundedRect]; menuButtonD.frame = CGRectMake(185, 5, 50, 50); [menuButtonD setTitle:@"D" forState:UIControlStateNormal]; [menuView addSubview:menuButtonD];
    UIButton *menuButtonE = [UIButton buttonWithType:UIButtonTypeRoundedRect]; menuButtonE.frame = CGRectMake(245, 5, 50, 50); [menuButtonE setTitle:@"E" forState:UIControlStateNormal]; [menuView addSubview:menuButtonE];
    [self.view addSubview:menuButton]; [self.view addSubview:menuView]; }

  7. 在该方法下方添加一个新方法:

    - (void)menuButtonTapped:(id)sender
    {
        if (menuView.hidden)
            menuView.hidden = NO;
        else
            menuView.hidden = YES;
    }
    

  8. 在互联网上找到一些漂亮的 png 图像来代表您的菜单按钮。将其命名为 menu.png 并将其拖放到您的项目中(在左侧的“文件”菜单内)

就是这样运行项目;)

于 2013-02-25T16:35:34.000 回答
1

看看这个:

http://www.cocoacontrols.com/platforms/ios/controls/aurosetteview

当你按下一个按钮时,项目会出现,当你再次按下时,它会关闭。

源代码在库中。用它来阅读。

对于您的情况,您还需要包含滚动视图。

于 2013-02-25T16:01:13.070 回答
0

刚读过iphone的初学者书。你必须先读一些书。首先尝试了解 iphone 中的基本控件和目标 c 中的基本操作

您的上述工作非常基础。现在您只需一步之遥,即阅读一本书,您将在网上获得大量免费 pdf

于 2013-02-25T15:46:04.027 回答