您好我是iOS编程的新手,我想知道将UIView
拖入故事板并以编程方式创建它们之间有什么区别。
我正在使用iPad进行开发。我有UISplitView
。在Appdelegate.m
内,我以编程方式创建了UISplitViewController
:
MyTableViewController* orders = [[MyTableViewController alloc] initWithClassName:@"Order"];
MyDetailsViewController* details = [[MyDetailsViewController alloc] init];
UISplitViewController* splitViewController = [[UISplitViewController alloc] init];
splitViewController.viewControllers = [NSArray arrayWithObjects: orders, details, nil];
self.window.rootViewController = splitViewController;
[self.window makeKeyAndVisible];
在故事板中,我将根视图控制器的类设置为MyTableViewController
,将详细视图控制器的类设置为MyDetailsViewController
。但是,如果我将另一个UILabel
拖到MyDetailsViewController
的故事板中,并将其作为该类的属性进行连接。它没有显示出来。我只能在viewDidLoad()
内以编程方式创建它。
- (void)viewDidLoad
{
[super viewDidLoad];
//self.testLabel was dragged into the storyboard and added as a property of the class
[self.testLabel setText:@"TESTING!"];
[self.view addSubview:self.testLabel];
// creating programmatically
UILabel *program = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 100)];
program.text = @"im a string";
program.hidden = NO;
[self.view addSubview:program];
// The second one program shows up
}
为什么会出现这种情况?
答案 0 :(得分:1)
每当你做拖拽时在故事板中,它实际上创建了一个基于XML的文件,其中包含有关组件的每个细节。所以没有生成(目标-C)代码。您可以右键单击故事板&将其作为源代码打开以查看XML文件。即使在编译或运行程序之前,也可以查看故事板中的任何设计。
编写代码时,只能通过编译和查看来查看视图/视图控制器。然后在模拟器中运行构建。
请点击右键单击故事板&将其作为源代码打开,您可以看到它在XML标记中的表示方式。
我希望有所帮助。
答案 1 :(得分:0)
您可以在MyDetailsViewController的.h文件中编写IBOutlet
@property (weak, nonatomic) IBOutlet UILabel *myLabel;
然后转到故事板并右键单击您的UILabel。您可以在那里看到新的引用插座。将其拖动到视图控制器。在那里你将获得myLabel选项。选择它。然后,您可以在编码中访问故事板中的UILabel。因此,您可以减少代码并在XIB中自定义UILabel属性,从而避免编码。