私は iOS 開発に飛び込んでおり、UISplitViewController を使用せずに分割ビュー レイアウトを使用する iPad アプリを作成しようとしています。この質問は既に投稿されていることがわかりましたが、あいまいすぎて、現在のレベルの iOS エクスペリエンスでは役に立ちません。
つまり、マスター ビュー用と詳細ビュー用の 2 つの子ビュー コントローラーを含む、MySplitViewController という名前の UIViewController クラスがあります。MySplitViewController のインスタンスをナビゲーション スタックにプッシュすると、左側にテーブル ビュー (マスター) が表示され、左側に詳細ビューが表示されるように、これを実装しようとしています。ただし、コードを実行すると、分割ビュー全体がテーブル ビューでいっぱいになります。Split View レイアウトを手動で作成するにはどうすればよいですか? これが私の3つのView Controllerクラスです。それらは非常に単純です...
MySplitViewController.m
#import "MySplitViewController.h"
#import "MasterViewController.h"
#import "DetailViewController.h"
@interface MYSplitViewController (){}
@property (nonatomic, strong) MasterViewController *masterViewController;
@property (nonatomic, strong) DetailViewController *detailViewController;
@end
@implementation MySplitViewController
- (id)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:aDecoder];
if (self) {
self.masterViewController = [[MasterViewController alloc] initWithNibName:nil bundle:nil];
self.detailViewController = [[DetailViewController alloc] initWithNibName:nil bundle:nil];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.frame = CGRectMake(0, 0, 768, 1004);
[self.view addSubview:self.masterViewController.view];
[self.masterViewController viewDidLoad];
[self.view addSubview:self.detailViewController.view];
[self.detailViewController viewDidLoad];
}
@end
MasterViewController.m
#import "MasterViewController.h"
@interface MasterViewController ()
@end
@implementation MasterViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
UITableView *table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 100, 1004) style:UITableViewStylePlain];
table.dataSource = self;
table.delegate = self;
[self.view addSubview:table];
}
@end
DetailViewController.m
#import "DetailViewController.h"
@interface DetailViewController ()
@end
@implementation DetailViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
UIView *uiview = [[UIView alloc] initWithFrame:CGRectMake(100, 0, 668, 1004)];
[self.view addSubview:uiview];
}
@end
私は何を理解していませんか?
あなたの知恵を前もってどうもありがとう!
PS UISplitViewController を使用しない理由は注目に値します。私のアプリは現在、ルート ビューが分割ビューにならないように設計されています。アプリのルート ビューにより、分割ビューがナビゲーション スタックにプッシュされます。これに関する問題は、UISplitViewController がアプリのルート ビューになるように設計されており、Apple のドキュメントでは、UISplitViewController を使用する場合はルート ビューである必要があると具体的に述べられていることです。そのため、独自の分割ビューを実装し、ビューを手動で管理しています。