如何在iPhone / iPad中使用presentModalViewController?

时间:2011-02-08 11:00:42

标签: iphone ipad presentmodalviewcontroller

嗨,我是iPhone / iPad开发的新手。

在我的应用程序中单击按钮,想要显示视图控制器,如presentModalViewController,我能够做包含UITableView与一些数量的值。在选择微粒行时我想将值传递给控制器​​后面的控制器。

我正在使用Apple示例应用程序PhotoPicker代码。 http://developer.apple.com/library/ios/#samplecode/PhotoPicker/Introduction/Intro.html

但是我无法理解我在代码中做错了什么。

我无法进入MyViewController.m

中的代码
- (void)didFinishWithCamera
{
    [self dismissModalViewControllerAnimated:YES];
//Here is my some logic
}

任何人都可以帮助我...如何从OverlayViewController调用此函数?

请参考以上链接并指导我或给我一些步骤或指导我同样的。

2 个答案:

答案 0 :(得分:0)

使用delegation

我在我正在写的应用程序中使用类似的东西:

// MySecretSelectionViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    [delegate mySecretSelectionViewController:self didSelectObject:[self objectForIndexPath:indexPath] atIndexPath:indexPath];
}

// MyViewController.m
- (void)mySecretSelectionViewController:(MySecretSelectionViewController *)es didSelectObject:(MySecretObject *)object atIndexPath:(NSIndexPath *)indexPath {
    // do something with the selected object
    [self dismissModalViewControllerAnimated:YES];
}

- (void)showMySecretSelectionViewController:(id)sender {
    MySecretSelectionViewController *vc = ...
    vc.delegate = self;
    // present ViewController
}

答案 1 :(得分:0)

您也可以使用NSNotificationCenter执行此操作。

在MyViewController.m中:

- (void)viewDidLoad 
{
    // your code

    // Add observers
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishWithCamera) name:@"YourObserverName" object:nil];
}

+ (void)callDidFinishWithCamera
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"YourObserverName" object:nil];
}

- (void)dealloc 
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];

    // your code
}

来自OverlayViewController.m:

[MyViewController callDidFinishWithCamera];

使用上面的类方法从OverlayViewController调用MyViewController中的didFinishWithCamera