从委托方法显示另一个视图

时间:2011-08-02 09:13:38

标签: objective-c view delegates uiimageview protocols

我有2个类:A类有一个声明的协议,我在B类中调用。我使用委托将图像从A类发送到B类,在B类中使用A类协议方法对该图像进行处理。然后我想在B类内部的方法结束时创建新视图。我知道调用新视图的两行是有效的,因为如果我在类A中调用它(例如在viewDidLoad中)那么它正在工作。新视图在这种情况下显示我想要的一切。但是,当我从协议的方法调用它时,它无法正常工作。如何显示这个观点?

班A.h

@protocol AViewControllerDelegate<NSObject>
@optional
- (void) tappedImage:(NSNumber*)tag;
@end

班A.m

[self dismissModalViewControllerAnimated:YES];
if ([self.delegatee respondsToSelector:@selector(tappedImage:)])
    [self.delegatee performSelector:@selector(tappedImage:) withObject: [NSNumber numberWithInt:imageView.tag]];

班B.m

- (void) tappedImage:(NSNumber*)tag{
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed: [NSString stringWithFormat: @"%@.png",tag]]];

PictureEditingViewController *dvController = [[PictureEditingViewController alloc] initWithPicture: imgView.image];
[self presentModalViewController:dvController animated:YES];
//[dvController release]; dvController = nil;
}

调用PictureEditingViewController,我看到我在viewDidLoad里面的NSLog。然而,在iPhone屏幕上没有显示任何内容,可能新视图位于旧视图的“下方”。 如何在旧视图的顶部设置新视图..?

感谢您的帮助^^

1 个答案:

答案 0 :(得分:0)

我没有找到任何好方法,但是当我添加导航控制器而不是:

[self presentModalViewController:dvController animated:YES]; 

使用:

[self.navigationController pushViewController:pictureEditingVC animated:YES]; 

应用程序运行良好。它不是解决方案,而是省略此问题的一种方法。