Iphone 将简单UIView从类添加到主ViewController
亲爱的学者们,代码大师们 我的问题很简单,我已经搜索和尝试了一段时间,没有任何运气,我将非常感谢一些微小的帮助 我有一个简单的类,它应该生成如下视图:Iphone 将简单UIView从类添加到主ViewController,iphone,objective-c,class,uiview,uiviewcontroller,Iphone,Objective C,Class,Uiview,Uiviewcontroller,亲爱的学者们,代码大师们 我的问题很简单,我已经搜索和尝试了一段时间,没有任何运气,我将非常感谢一些微小的帮助 我有一个简单的类,它应该生成如下视图: // vipcardclass.h // #import <UIKit/UIKit.h> @interface vipcardclass : UIViewController { } +(IBAction)newsletter; @end 请看一下这个,,上面几行,如果它是主视图控制器,我会使用self.view add
// vipcardclass.h
//
#import <UIKit/UIKit.h>
@interface vipcardclass : UIViewController {
}
+(IBAction)newsletter;
@end
请看一下这个,,上面几行,如果它是主视图控制器,我会使用self.view addSubview:,我的问题是在类中使用它时,正确的语法是什么
在我的主视图中,控制器I
导入vipcardclass.h
在某个时候调用类函数
[vipcardclass时事通讯];
除了将其添加到主控制器之外,它还可以正常工作。
我想补充一点,作为旁注,类功能不与主视图控制器中的任何函数通信或相关,它是一个fire and forget thingy,我只想打开并显示这个视图
非常感谢。试试这个:
// vipcardclass.m
#import "vipcardclass.h"
@implementation vipcardclass
+ (UIView*) newsletter {
UIView *vipcard = [[UIView alloc] initWithFrame:CGRectMake(10.0, 0.0, 290.0, 280.0)];
UIImageView *vipcardBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"vip_card.png"]]; //background.png
[vipcard addSubview:vipcardBG];
[vipcardBG release];
CGRect webFrame = CGRectMake(6.0, 0.0, 300.0, 210.0);
UIWebView *content = [[UIWebView alloc] initWithFrame:webFrame];
[content setBackgroundColor:[UIColor clearColor]];
[content setOpaque:NO];
NSString *urlAddress = @"http://www.google.com";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[content loadRequest:requestObj];
[vipcard addSubview:content];
[content release];
NSLog(@"Newsletter was called");
return [vipcard retain];
}
@end
在主视图控制器中:
- (IBAction) loadNewsletter
{
UIView *vipcard = [vipcardclass newsletter];
[self.view addSubview:vipcard];
[vipcard release];
}
- (IBAction) loadNewsletter
{
UIView *vipcard = [[vipcardclass alloc] init];
[self.view addSubview:vipcard];
[vipcard release];
}
此外,您可能实际上希望将UIView子类化,并将newsletter中的所有代码包含到init方法中:
在主视图控制器中:
- (IBAction) loadNewsletter
{
UIView *vipcard = [vipcardclass newsletter];
[self.view addSubview:vipcard];
[vipcard release];
}
- (IBAction) loadNewsletter
{
UIView *vipcard = [[vipcardclass alloc] init];
[self.view addSubview:vipcard];
[vipcard release];
}
除了解决方案中的一个小案例敏感错误[self.view addsubview:vipcard]外,该问题已解决且运行良好;应该是[self.view addSubview:vipcard];//让我们为下一代修改一下,看看这篇文章谢谢你的解决方案,我很感激。嘿,Stephen,再次感谢你扩展了答案。我使用的是第一种方法,并添加了一个按钮,可以从superview中删除此视图,但似乎我不能,关于语法有什么想法吗+voidcloseKeyFunction:idsender{NSLog@CloseVIP卡%@,发件人;//[self.view removeFromSuperview];//-问题在这里}[self.view正在调用您添加vipcard的视图。请尝试NSArray*子视图=[self.view子视图];找出vipcard是哪个视图,然后[[subviews objectAtIndex:??]removeFromSuperview];