1

私は 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 を使用する場合はルート ビューである必要があると具体的に述べられていることです。そのため、独自の分割ビューを実装し、ビューを手動で管理しています。

4

2 に答える 2

1

あなたもUIViewControllerに基づいているMGSplitViewControllerを試してみたいかもしれません..そしてプッシュを可能にします..MGSplitViewController

于 2012-10-09T15:01:35.670 に答える
1

ルート ビューを別の方法で表示することを考えると、役立つ場合があります。たとえば、次のように:UISplitViewControllerルート ビューとして使用し、現在のルート ビューでモーダル ビューをその上に表示します。したがって、現在のルート ビューとUISplitViewController.

于 2012-10-09T15:03:47.183 に答える