我在MainViewController
中将InfoViewController的视图加载为- (void)viewDidLoad
{
[super viewDidLoad];
infoViewController = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:nil];
mainInfoView = (MainInfoView *)[mainInfoViewController view];
}
中的子视图(在.h中声明):
InfoViewController
(MainViewController从tableviewcontroller单元格的segue推出,并有一个导航栏。)
这是在- (void)viewDidLoad
{
[super viewDidLoad];
self.view.frame = CGRectMake(130, 0, 178, 299);
}
的viewDidLoad中设置视图的大小:
InfoViewController
在InfoViewController的“大小”检查器中,我设置了相同的大小(使用:178,高度:299)。 我为XIB中的InfoViewController和Storyboard中的MainViewController禁用了“Use Autolayout”。
我在MainViewController
中有一些UILabel,UITextViews和UIImageViews。它们以.h中的属性声明并以.m合成。并连接到XIB中的元素。它们的内容在- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
infoViewController.kategoriLabel.text = [[objArr objectAtIndex:detailIndex] objectForKey:@"Type"];
}
的viewWillAppear中定义,如下所示:
{{1}}
当我运行应用程序并输入此视图时,某些标签,图像和textView会突然显示在看似随机的位置。这只发生在一些元素上。
我在另一个应用程序中做了同样的事情,它在模拟器(iPhone 4版本6,0)和iPhone 5设备上都能正常工作,但是在这个应用程序中,两者都很混乱。 当我比较应用程序时,我似乎无法在Utilities或其他任何地方找到任何不同的东西。
如果您经历过类似的事情并解决了它,或者您可能知道可能导致它的原因,我将非常感谢您的回答。感谢。
PS。我正在使用Xcode 4.5.1
答案 0 :(得分:2)
我有一个不同的问题,但我的蛮力解决方案也可能对你有用。就我而言,我想在一系列视图控制器中禁用最终项目上的导航栏。但是,IB不允许您删除导航栏,因此我必须在viewWillAppear中手动执行此操作。然而,一旦栏被隐藏,IOS将我在IB中定义的所有按钮和对象移动到(现在隐藏的)导航栏的高度。
我在Controller的viewWillAppear中使用了以下内容。 (当我在viewWillAppear中尝试这个时,对象往往会明显移动)
-(void) viewWillAppear:(BOOL)animated
{
//turn off nav bar
[[self navigationController]setNavigationBarHidden:YES animated:NO];
//correct positions of items that shift when the bar disappears
myThing.center = CGPointMake(desired_x_coord, desired_y_coord);
myOtherThing.center = CGPointMake(desired_x_coord2, desired_y_coord2);
...etc...
//don't forget to call the base class
[super viewWillAppear:animated];
}
烦人,但工作。如果找不到移动对象的来源,可以尝试使用viewWillAppear强制移动它们的位置。