私は独自のフリーフォームの最初のビューコントローラを作成し、その内部にテーブルビューを配置しました。クラスを適切に設定し、このテーブルのIBOutletを作成しました。UIViewControllerからのビューの追加
これを行います 私はウィンドウ内のスライドのように最初のビューコントローラからビューを表示したいので、私が作成した私の第2のビューコントローラでとIBAction:
- (IBAction)optionsButtonTapped:(id)sender {
OptionsViewController *optionsVC = [[OptionsViewController alloc] init];
// Custom CGRect:
CGFloat width = self.view.frame.size.width - 10.0;
CGFloat height = [optionsVC.optionsTableView numberOfRowsInSection: 0] * 50.0;
CGFloat x = self.view.frame.origin.x + ((self.view.frame.size.width - width)/2);
CGFloat y = self.view.frame.origin.y + self.view.frame.size.height + (1.2 * height);
CGRect hiddenFrame = CGRectMake(x, y, width, height);
// Custom UIView:
UIView *view = optionsVC.view;
view.frame = hiddenFrame;
[self.view addSubview: view];
[self addChildViewController: optionsVC];
[optionsVC didMoveToParentViewController: self];
//NSLog(@"Frame for the view is: %@", NSStringFromCGRect(hiddenFrame));
// Animation:
[UIView animateWithDuration: 0.3 animations:^(void){
CGRect visibleFrame = hiddenFrame;
visibleFrame.origin.y = self.view.frame.origin.y + self.view.frame.size.height - 5.0 - height;
view.frame = visibleFrame;
} completion:^(BOOL finished) {
NSLog(@"Animation completed");
}];
}
高さ、私はのNSLogが0で使用これは、私がinit optionsVC(私はdataSourceをセットアップし、デリゲート)時にテーブルビューがロードされていないためです。たとえ高さを例えばに設定しても。 200.0ビューはまだ表示されませんが、viewDidLoadが実行された2番目のビューコントローラーからのログがあります。
私は間違っていますか?
私はシンプルなビューコントローラーを持っていて、画面の下からスライドするメニューを追加したい(そしてこのメニューはテーブルビューベースです)。 – Ancinek
@Ancinek、ContainerViewを使用し、あなたが設定されています。それについて多くのチュートリアルがあります:)私の答えは受け入れられたとマークすることを忘れないでください。 – Preetygeek
私はそれにまっすぐジャンプします!ありがとう! – Ancinek