2012-03-24 18 views
1

info:xcode 4.3.2,iOS5,使用storyboard。如何每次點擊特定選項卡時使相機出現?

從xcode的「選項卡式應用程序」模板創建項目。
做的:

@implementation SUSecondViewController 
UIImagePickerController *pic; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    pic = [[UIImagePickerController alloc] init]; 
    pic.delegate = self; 
    // [pic setSourceType:UIImagePickerControllerSourceTypeCamera]; 
    [self presentModalViewController:pic animated:YES]; 
} 

當我點擊選項卡中的第一次,顯示在相機應用。
當我第二次單擊該選項卡時,會顯示模板的默認視圖,但是我希望每次單擊該選項卡時都會顯示攝像機。

我怎樣才能使相機出現每次我點擊一個特定的選項卡(f.ex.相機圖標)?

+0

請參閱我的答案。這應該對你有所幫助。如果您需要更多幫助,請告訴我。 – 2012-03-24 11:25:19

回答

2

viewDidLoad僅在加載視圖時發生。

如果視圖消失/重新出現,則無法保證視圖將被卸載/加載。 也許是因爲仍然有一個強大的指向viewController的指針,系統不需要釋放一些內存。

如果你想要得到它調用每次出現視圖時,將在UIViewControllers

代碼的
- (void)viewDidAppear 

方法,而不是

- (void)viewDidLoad 

你可能也想在這裏看看: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html#//apple_ref/doc/uid/TP40007457-CH10-SW1

+0

爲了我的目的,viewWillAppear比viewDidLoad效果更好。我想這取決於你的具體使用情況。 – user77115 2012-03-24 12:43:52

2

viewDidAppear:上使用它如viewDidLoad您可能無法獲得一些與UI相關的東西w因爲筆尖沒有完全加載,直到viewDidLoad完成執行。

所以我想如下圖所示

@implementation SUSecondViewController 
UIImagePickerController *pic; 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    // Do any additional setup after loading the view, typically from a nib. 
    pic = [[UIImagePickerController alloc] init]; 
    pic.delegate = self; 
    // [pic setSourceType:UIImagePickerControllerSourceTypeCamera]; 
    [self presentModalViewController:pic animated:YES]; 
} 

希望這可以幫助你,你就viewDidAppear:代碼這一點。

+0

因爲他在[super viewDidLoad]之後做了所有事情,所以這不應該成爲問題。 此問題不會在視圖的第一次出現時發生。 建議在viewWillAppear中執行它仍然是正確的解決方案。 ;) – Thyraz 2012-03-24 11:11:04

+0

@Thyraz:如果您從'viewWillAppear:'調用'presentModalViewController:animated:',我仍然不會提供模態視圖。它必須從'viewDidAppear:' – 2012-03-24 11:14:23

+0

哦,確定它必須viewDidAppear而不是viewWillAppear,我的壞。 – Thyraz 2012-03-24 11:15:38

相關問題