2013-02-25 46 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