【发布时间】:2014-04-03 21:48:48
【问题描述】:
这就是我想要做的:
单击“信息 (i)”按钮时,我需要显示一个弹出框,左侧是图像,右侧是一些相关文本。
现在我们将后台视图称为“视图 1”,将弹出框称为“视图 2”。
View2Controller.h 如下所示:
@class View2Controller;
@protocol View2ControllerDelegate <NSObject>
- (void)infoPopover:(View2Controller *)obic loadImage: (NSString *)imageFilename;
@end
@interface View2Controller : UIViewController
@property (strong, nonatomic) IBOutlet UIImageView *imageInfo;
@property (strong, nonatomic) IBOutlet UILabel *textInfo;
@property (nonatomic, assign) id<View2ControllerDelegate> delegate;
@end
id <View2ControllerDelegate> _delegate;
现在 View1Controller.h 有这一行:
@interface View1Controller : UIViewController <View2ControllerDelegate>
View1Controller.m 的@implementation 看起来有点像这样
- (IBAction)showInfo:(id)sender {
UIButton *btn = (UIButton *)sender;
View2Controller *obic = [[View2Controller alloc]init];
[obic setDelegate:self];
switch (btn.tag) {
case 1:
[self infoPopover:obic loadImage:@"info1.png"];
break;
case 2:
//Info View 2
break;
case 3:
//Info View 3
break;
case 4:
//Info View 4
break;
case 5:
//Info View 5
break;
case 6:
//Info View 6
break;
default:
break;
}
}
和
- (void)infoPopover:(View2Controller *)obic loadImage:(NSString *)imageFilename
{
[obic.imageInfo setImage:[UIImage imageNamed:imageFilename]];
}
我查阅了几篇关于代表如何工作的教程。但我仍然无法在“UIImageView imageinfo”上显示图像“info1.png”。任何 cmets 都非常感谢!
【问题讨论】:
-
您的问题可能是您如何使用 alloc init 创建 obic。这很可能是创建 View2Controller 的一个新实例,而不是访问您已有的实例。您需要解释您的 2 个控制器是如何创建的,以及您的控制器的整体层次结构是什么(它们是在导航控制器、拆分视图等中)。
-
我只是在单击“i”按钮后使用“popover”从 View1Controller 切换到 View2Controller。我刚刚意识到 View1Controller(以及其他一些控制器)嵌入在导航控制器中,但 View2Controller 不是。 View2Controller 是否也应该嵌入到导航控制器中??
标签: ios objective-c delegates uiimageview popover