2014-02-06 47 views
0

我正在創建一個應用程序,用戶可以在其中嘗試不同的眼鏡。更新視圖控制器而不替換所有內容

mainView控制器有兩個IUImageViews(照片和眼鏡)。這個視圖控制器也有兩個按鈕,(拍照和選擇照片)。一旦用戶輕掃或點擊導航按鈕,就會出現側面導航,用戶可以選擇一副眼鏡來嘗試。

但是,只有在用戶選擇了一副眼鏡時,才能使用或選擇照片而不是其他方式,因爲當選擇一副眼鏡時照片會被完全覆蓋。

這使我想知道如何以及如果我可以允許它,所以視圖不會被覆蓋,所以如果用戶拍攝照片,然後選擇一副眼鏡,照片會留在那裏,然後這副眼鏡會出現太。

現在到當前代碼:

的每一副眼鏡具有上的導航按鈕,這是其中一個按鈕的一個例子...

- (IBAction)glass_one_pressed:(id)sender{ 
[self performSegueWithIdentifier:@"imageChangeSegue" sender:nil];} 

的賽格瑞看起來像這樣...

//Segue for glasses one 
if ([[segue identifier] isEqualToString:@"imageChangeSegue"]) { 
    NewViewController *secondViewController = segue.destinationViewController; 
    secondViewController.theImageForTheImageView = [UIImage imageNamed:@"glasses_one.png"]; 
} 

故事板的圖片:http://postimg.org/image/rcjfai52d/

我希望我已經解釋得很好,如果沒有,我已經上傳了該項目供您查看。

下載Zip:https://mega.co.nz/#!9hxmjSZT!L7UFGpKBC5CsQQtuPGh0SVfRN4TdxLLRvh6jJW-TmD0

任何幫助將是非常讚賞。請注意,我是iOS開發新手,我從事Web開發工作,因此Objective-C和PHP編碼之間的差異非常大。

非常感謝, 扎克。

+0

我認爲您需要一個不同的範例來完成此項工作。當你選擇一副眼鏡,而不是延續到一個新的控制器時,它應該把你帶回到帶有你的照片的那個眼鏡上,而且眼鏡需要放在臉上的圖像視圖中,而且它需要可拖動,所以你可以將它移動到你想要的位置。眼鏡圖像也需要有一個他們目前沒有的透明背景。 – rdelmar

回答

0

你的問題是你每次創建一個新的NewViewController。

//Segue for glasses one 
if ([[segue identifier] isEqualToString:@"imageChangeSegue"]) { 
    NewViewController *secondViewController = segue.destinationViewController; 
    secondViewController.theImageForTheImageView = [UIImage imageNamed:@"glasses_one.png"]; 
} 

你應該隱藏導航控制器,而不是,或保存在實際NewViewController顯示的圖片並進行設置也是新的。


在SidebarViewController.m中添加此方法以防止執行segue。

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender 
{ 
    if ([identifier isEqualToString:@"imageChangeSegue"] || [identifier isEqualToString:@"glasses_two"]) { 
     return NO; 
    } 
    return YES; 
} 

更改處理程序是這樣的:

//When glasses one button is pressed... 
- (IBAction)glass_one_pressed:(id)sender{ 
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
    SWRevealViewController *contr = (SWRevealViewController *)appDelegate.initialViewController; 
    //close the sidebar 
    [contr revealToggleAnimated:YES]; 
    //set the new image 
    appDelegate.myNewViewController.glassView.image = [UIImage imageNamed:@"glasses_one.png"]; 
} 

在NewViewController補充:

- (void)viewDidAppear:(BOOL)animated 
{ 
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
    appDelegate.myNewViewController = self; 
} 

在AppDelegate.h補充:

@property (strong, nonatomic) SWRevealViewController *initialViewController; 
@property (strong, nonatomic) NewViewController *myNewViewController; 

在AppDelegate中。m將此行添加到應用程序中:didFinishLaunchingWithOptions:方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    ... 
    //save the SWRevealViewController 
    self.initialViewController = (SWRevealViewController*)self.window.rootViewController; 

    return YES; 
} 
+0

嗨Daniele,謝謝你的幫助。我想知道是否可以給我一些示例代碼或指導我到正確的地方學習如何隱藏導航控制器或將圖片保存在NewViewController中以使其成爲可能。我有一個小谷歌,嘗試了不同的東西,但我還沒有成功。再次感謝Zack。 –

+0

@ZackJones試試這個代碼,它應該工作 – drolando

+0

你先生是一個天才!它完美的作品:)謝謝。 –

相關問題