【问题标题】:How can I make the camera appear every time I click a specific tab?每次单击特定选项卡时如何使相机出现?
【发布时间】:2012-03-24 10:40:47
【问题描述】:

信息:xcode 4.3.2,iOS5,使用情节提要。

从 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. 相机图标)?

【问题讨论】:

  • 参考我的回答。那应该对你有帮助。如果您需要更多帮助,也请告诉我。

标签: iphone ios5 uistoryboard xcode4.3


【解决方案1】:

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

【讨论】:

  • 对我而言,viewWillAppear 比 viewDidLoad 效果更好。我想这取决于您的具体用例。
【解决方案2】:

viewDidAppear: 上使用它,就像在viewDidLoad 上一样,您可能无法获得一些与 UI 相关的东西,因为在 viewDidLoad 完成执行之前,Nib 尚未完全加载。

所以我希望你在viewDidAppear: 上编码,如下所示

@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];
}

希望对你有所帮助。

【讨论】:

  • 因为他在 [super viewDidLoad] 之后做了所有事情,这不应该是这里的问题。此外,该问题不会在第一次出现视图时发生。在 viewWillAppear 中执行此操作的建议仍然是正确的解决方案。 ;)
  • @Thyraz:如果您从viewWillAppear: 调用presentModalViewController:animated:,我仍然认为不会显示模态视图。必须从viewDidAppear:
  • 哦,肯定是 viewDidAppear 而不是 viewWillAppear,我的错。
  • @Thyraz:我认为一旦别人发布了正确的答案就改变你的答案是不好的。实在不行。
  • @Thyraz:实际上他可以通过我的回答意识到他的错误。不需要你向他指出来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多