我使用presentModalDialog来显示viewcontroller的视图但是viewDidLoad永远不会被调用?!
是否有任何方法被调用,我可以放置填充和配置视图的逻辑?
编辑:
放一些代码有点困难,你需要看到这一切,但是这里有:
我有2个笔尖和2个视图控制器(portrait-mainvc / landscape),它们都继承自1个具有逻辑和iboutlet的基类。这是为了让我重用代码。当主控制器中的方向发生变化时,它会在2个控制器(模态对话框)之间切换,而这两个控制器又使用它们各自的笔尖,但它们都使用相同的基本代码来配置UI项目。
@implementation HomeViewControllerBase
- (void)configureBestSellItems
{
[self startRetrievingRegions];
// load all the images from our bundle and add them to the scroll view
// NSUInteger i;
for (int i = 0; i <= 150; i++)
{
NSString *imageName = @"tempImage.jpg";
UIImage *image = [UIImage imageNamed:imageName];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
// setup each frame to a default height and width, it will be properly placed when we call "updateScrollList"
CGRect rect = imageView.frame;
rect.size.height = kScrollObjHeight;
rect.size.width = kScrollObjWidth;
imageView.frame = rect;
imageView.tag = i; // tag our images for later use when we place them in serial fashion
[self.bestSellScrollView addSubview:imageView];
[imageView release];
}
[self layoutScrollImages]; // now place the photos in serial layout within the scrollview
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
[self configureBestSellItems];
}
@end
@interface HomeViewController : HomeViewControllerBase
{
}
@interface HomeViewController_Landscape : HomeViewControllerBase
{
}
@implementation HomeViewController
//This works for portrait
- (void)viewDidLoad
{
[super viewDidLoad];
}
@end
@implementation HomeViewController_Landscape
//This does not work
- (void)viewDidLoad
{
[super viewDidLoad];
}
//This works as suggested
- (void)awakeFromNib
{
[super configureBestSellItems];
}
@end
答案 0 :(得分:0)
您可以在viewcontroller中尝试这些:
-(void)awakeFromNib
{
[super awakeFromNib];
// your code here
}
或
-(void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
// your code here
}
但是,您应该尝试找到从未调用viewDidLoad的原因。你也可以检查一下 link
答案 1 :(得分:0)
你可能在其中有一个名为presentModalDialog:的自定义函数,因为搜索apple的文档没有该函数。您正在调用加载Xib的自定义函数。
我正在做同样的事情。
你想要这个:
[self presentModalViewController:controller...
ViewDidLoad由控制器调用,如果调用awakeFromNib,你可能会自己获取视图。
答案 2 :(得分:0)
这是目标c中的常见问题: 你应该看看流动的:
1启动视图控制器,您应该在app delegate中以正确的方式初始化它。 2 - 查看视图的文件所有者,它必须是正确的类,通常与uiview的名称相同。