2013-08-27 53 views
0

在另一個顯示它,我有我的地方,從我的主要的viewController(稱之爲mainViewController),我打電話顯示另一個的viewController(呼叫工作的iPad應用它是從.xib文件創建的nextViewController)。這第二次的viewController允許用戶捕獲像這樣的圖像:試圖顯示從一個的viewController捕獲一個UIImage,並在iOS的

- (IBAction)imageCapture:(id)sender { 

    _myImage = [_nextView captureImage]; 
    UIImageWriteToSavedPhotosAlbum(_myImage, nil, nil, nil); 
    [self dismissViewControllerAnimated:YES completion:nil]; 

} 

一旦這個圖像被捕捉,我需要這個圖像現在可以傳遞迴調用的viewController(mainViewController),但老實說,我不知道如何去做這個。我曾嘗試創建我在我的nextViewController,我試圖以通過新獲得的圖像與mainController的屬性參考做mainViewController的屬性引用,但是這是行不通的。

在此先感謝所有回覆的人。

+1

可以通過協議通過此值。你如何用protokol試用它? –

+0

它不工作的方式?你有沒有看過讓它成爲委託關係? – Wain

+0

感謝您的及時回覆。我想弄清楚如何使用協議來做到這一點,但這對我來說是新的。我理論上知道哪些協議是,但在這種情況下,如果可能的話,我需要一個例子。 – syedfa

回答

1

要有效地做到這一點,您應該而不是在呈現的視圖控制器中創建屬性mainViewController。這會導致可重用性問題,再加上它是緊密耦合,這是不可取的。相反,正如上面的註釋,你應該使用一個協議。 Objective-C的協議語法見this documentation

在你NextViewController,你應該做一個委託方法是這樣的:

-(void)nextViewController:(NextViewController *)nextViewController capturedImage:(UIImage *)image; 

然後,在您的主視圖控制器類,你應該實現此方法,做任何你想要的圖像。值得注意的是,你可能想要從主視圖控制器中解散控制器。不要忘記在創建它時設置下一個視圖控制器的委託屬性。

我希望這個澄清您的問題!

+0

我會委託方法返回一個'UIImage'。 –

+0

非常感謝您的及時回覆。當我使用你的線我的協議聲明: - (void)nextViewController:(NextViewController *)nextViewController capturedImage:(UIImage *)image; 我得到以下錯誤: 期待類型,相對於(NextViewController *)任何理由,爲什麼? – syedfa

+0

是的,我在這種情況下遇到了這個錯誤。這意味着你需要將協議部分移過頭文件中的@interface,並且你需要在協議原來的地方添加一行'@protocol NextViewControllerDelegate;'。這基本上是一個聲明問題,這意味着當你使用它時,這個類還沒有被聲明。 – architectpianist

0

首先,你應該在secondViewController創建一個屬性來傳遞你的mainViewController之前呈現secondViewController。例如:

_secondViewController.mainViewController = self; 

其次,您需要在mainViewController屬性將圖像從secondViewController回傳。例如:

self.mainViewController.capturedImage = _myImage; 

希望這會幫助你。

+0

我想我會傳遞圖像,而不是控制器。 –

相關問題