Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将简单UIView从类添加到主ViewController_Iphone_Objective C_Class_Uiview_Uiviewcontroller - Fatal编程技术网

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];