【问题标题】:Showing another view from delegate method从委托方法显示另一个视图
【发布时间】:2011-08-02 09:13:37
【问题描述】:

我有 2 个类:A 类有一个声明的协议,我在 B 类中调用它。我使用委托将图像从 A 类发送到 B 类,并在 B 类中根据 A 类的协议方法处理该图像。然后我想在 B 类中这个协议方法的末尾创建新视图。我知道调用新视图的这 2 行代码正在工作,因为如果我在 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 屏幕上没有显示任何内容,可能新视图在旧视图的“下方”。 如何在旧视图的顶部设置新视图..?

感谢您的帮助^^

【问题讨论】:

    标签: objective-c view delegates uiimageview protocols


    【解决方案1】:

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

    [self presentModalViewController:dvController animated:YES]; 
    

    使用:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多