2013-02-25 47 views
-2

预介绍到一个问题:
我申请了iOS开发人员的职位。对于这个职位,他们不需要Objective-C或iOS开发的知识。这些必备条件是C/C++和Linux平台开发的良好体验。iPhone初学者的应用

问题:
采访的最后我得到了一个任务后(与词很容易教学贯彻,是吗?),我不明白是否它是如此。
面试官给我看他的iPhone看起来像一个应用程序: enter image description here

按/拖动按钮导致这样吧的外观:

enter image description here

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

我想先提出借口,因为我觉得自己就像一个想让自己的工作被别人完成的人。但我只想了解我可以如何解决这个问题。可可图书馆对我来说是一个巨大的新宠物。哪些类别/元素最适合用来实现这一目标?我之前用Qt,Tkinter,WinAPI(gui编程)为桌面编程,但在这里并没有多大帮助。
我需要编写类似面试官向我展示的类似代码。我试图在网上找到类似这样的东西,但没有成功。

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

在此先感谢您的回复!

解决
我要感谢大家谁回答,并没有离开我陷入这个未知的大海。
探索的一个星期后,我得到了我想要的东西:

enter image description here

的源代码(我很抱歉,但我不能复制粘贴从虚拟MAC OS机器代码)

enter image description here enter image description here

现在我明白我的问题有多广泛和愚蠢,但无论如何它可能会帮助某人开始。另外一个book帮了我很多。

+3

你觉得谁愿意自己的工作做一个人由他人? ......无论如何Objective-C需要编写iOS应用程序。 'UIButton'用于控制按钮,'UIScrollView'用于包含子按钮,滚动视图中用于按钮的更多'UIButton' ...这就是我无论如何都会这样做的... – jjv360 2013-02-25 15:53:40

回答

1

好吧 - 只是为了给你一些指导,说明如何开始以及如何继续,以便你不会迷失在可可这个伟大的世界... 并假设你熟悉编程并且拥有一些体面的经验在C++和Java世界...

打开xcode。 转到基于空白视图的应用程序。单视图应用程序可以。去自动引用计数(ARC)。

的Xcode为您创建一个应用程序委托模板(你不会需要这个任务)

视图控制器创建并为iPhone视图中的厦门国际银行/笔尖文件。 (如果有的话忽略ipad视图)。

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

正确定义您将在编辑xib文件时在界面builde中看到该操作。添加一个按钮并将其与此操作连接(触摸内部将是我认为最好的)。

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

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

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

  1. 创建一个UIScrollView。 (分配它并初始化它)
  2. 创建一些UIButtons。 (在objective-c中没有分配它的初始值)
  3. 设置你的第二个IBAction方法作为按钮的目标。
  4. 相应地将按钮定位在UIScrollView中。
  5. 将UIScrollView放置在顶部按钮下方。
  6. 将UIButtons作为子视图添加到Scroll视图的contentview。
  7. 将滚动视图作为subview添加到self.view(这是底层视图,界面生成器中的灰色东西)。

在hideScroller你必须......

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

替代你上面描述可以创建界面生成器和内所有视图的场景预先定义的滚动视图隐藏在IB(界面生成器)和showScroller和hideScroller你只需要设置其属性.hidden到是或否。但是我有一种勇气,觉得在你的背景下你应该可以做到这一点,而不是像IB连接你的代码一样。 如果您真的陷入该陷阱并且没有正确连接到代码的顶部按钮,那么也可以通过编程方式创建该按钮。

啊,我忘了。创建所有这些UI元素的正确位置应该是ViewController类的viewDidLoad方法。空的xcode模板中已经生成了一个空的。请在拨打电话[super viewDidLoad];之后注意。

+0

Danke IhnenfürIhr Gutachten,das ist gerade,is ich brauchte - nicht Code,sondern die Anleitung und die Idee – Tebe 2013-03-05 16:08:13

0

刚刚读过iphone的初学者书。你必须先阅读一些书。先了解基本控制在iphone的目标C &基本操作

你上面的工作是非常basic.now只是你是一步之遥和被读一本书,你会得到很多免费的PDF的净

4

Objective-C没有必要的理解,但面试官希望你创建一个简单的应用程序并将其返回给他?有趣的采访。

至于你的问题。我在这里看到被需要的类(预留AppDelegate中和您选择的一个UIViewController)是:

UIButton

UIScrollView

UIImageView

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

+0

面试官正在寻找是处理问题所涉及的思考过程。 – lakesh 2013-02-25 16:26:35

+0

在这种情况下,不需要查看任何类的类。你只是解释一下你将如何去做与泛型对象分配的任何工作。假设你需要'this'和'this'来使'suchandsuch'工作。如果他只是单纯地看待你将如何处理问题,那么就没有研究要做,这只是你一般能够解决的问题。 – Putz1103 2013-02-25 19:37:02

1

在这里你去:

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

  2. 进入菜单,选择File,New File,Objective-C类。将其命名为RootViewController并选择一个子类为UIViewController

  3. 转到您的应用程序委托.m文件(如果您的项目名称为Test,则此文件为TestAppDelegate.m)。在文件的顶部,它说:#进口“TestAppDelegate.h”另起一行,上面写着#进口“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; 
    } 
    @end

  6. 在同一个文件中找到名为方法 - (无效)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图像,代表你的菜单按钮。命名它的菜单。PNG和阻力,并在项目中拖放(以下简称“文件”菜单中左侧)

就是这样运行的项目;)

+0

对于滚动声明menuView作为UIScrollView而不是UIView,然后将其属性contentSize设置为大于帧大小。 – 2013-02-25 17:36:57