【问题标题】:how to show the views added in view controller如何显示视图控制器中添加的视图
【发布时间】:2014-03-10 12:10:58
【问题描述】:

我以编程方式创建了视图,但它没有显示在屏幕上 并在控制台中给出一条消息

无法为 UIMainStoryboardFile 'Main' 实例化默认视图控制器 - 可能 指定的入口点没有设置?

这是我的代码

  -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary 
*)launchOptions
{

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;

    exmTableViewController *vc =[[exmTableViewController alloc] init];

    self.window.rootViewController=vc;

    self.window.backgroundColor =[UIColor whiteColor];

    [self.window makeKeyAndVisible];

    return YES;
}

*Viewdidload 中的代码 *

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIImageView *img =[[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 100, 20)];

    self.imageView=img;

    [self.view addSubview:self.imageView];

    UILabel *lbl =[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 20)];

    lbl.text =@"Hello";

    self.view =lbl;

 }

【问题讨论】:

  • 如果您使用故事板,请不要将任何内容分配给您的根视图控制器。或者,如果您这样做,请摆脱情节提要。

标签: ios storyboard viewcontroller


【解决方案1】:

代替这一行self.view =lbl;,使用[self.view addSubview:lbl]; 将子视图添加到您的视图中。

【讨论】:

    【解决方案2】:

    试试这个

    - (void)viewDidLoad
        {
            [super viewDidLoad];
    
            UIImageView *img =[[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 100, 20)];
    
            self.imageView=img;
    
            [self.view addSubview:self.imageView];
    
            UILabel *lbl =[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 20)];
    
            lbl.text =@"Hello";
    
            [self.view addSubview:lbl]; 
    
         }
    

    【讨论】:

      【解决方案3】:
        -(void)viewDidLoad 
        { 
           [super viewDidLoad];
      
          UIImageView *img =[[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 100, 20)];                  [self.view addSubview:img];
      
          UILabel *lbl =[[UILabel alloc] initWithFrame:CGRectMake(10, 200, 100, 20)];
          lbl.text =@"Hello"; 
          [self.view addSubview:lbl];
        }
      

      试试这样。 self.view = lbl; 在这一行中你分配 self.view 是你要添加子视图的标签 [self.view addSubview:yourSubView]; 这样做。

      【讨论】:

        【解决方案4】:

        当您从情节提要创建视图控制器时,视图控制器由情节提要启动。您不应该自己创建 Windows 根控制器。您需要在 Plist 中提供故事板名称。

        加载视图后会调用 viewDidLoad 方法。在这里您需要设置视图(添加和配置子视图)。但是您正在更改由情节提要设置的 viewControllers 视图属性。如果您想更改您可以使用的视图控制器视图,

        - (void)loadView
        // inside this method you can assign new view to view property.
        

        如果您将视图添加为子视图,请使用视图的方法

        - (void)addSubview:(UIView *)view
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-16
          • 1970-01-01
          • 1970-01-01
          • 2013-06-05
          相关资源
          最近更新 更多