0

この TableViewController (IBOutlet sideTable にフックされたインターフェイス ビルダー オブジェクト) が、ViewController (Facebook のアプリ サイド メニューのようなもの) に入力しようとしている SideBarViewController のクラス xib ファイルにあります。何らかの理由で、これを機能させることができません。SideBarViewController クラスを tableviewcontroller のサブクラスにし、その実装ファイルでプログラム的に tableview をカスタマイズすると、うまく機能します。しかし、私はむしろ xib を使用します。ヒントをいただければ幸いです。

ViewController.h

      @property (nonatomic, strong) SidebarViewController *leftSidebarViewController;

ViewController.m

  - (UIView *)viewForLeftSidebar {
// Use applicationViewFrame to get the correctly calculated view's frame
// for use as a reference to our sidebar's view
CGRect viewFrame = self.navigationController.applicationViewFrame;
UITableViewController *controller = self.leftSidebarViewController.sideTable;
controller.view.frame = CGRectMake(0, viewFrame.origin.y, 270, viewFrame.size.height);
controller.view.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight;
return controller.view;
 }

SideBarViewController.h

      @property (nonatomic, strong) IBOutlet UITableViewController  *sideTable;
4

1 に答える 1

0

これらの手順を試してください

1) SidebarViewController.h を次のように変更します。

@interface SideBarViewController : UIViewController <UITableViewDataSource ,     
 UITableViewDelegate>
@property(nonatomic , weak) IBOutlet UITableView *sideTable;

2) では、のSideBarViewController.xibフック ビュー。ビューをフックしないでください。tableView の場合は、手順 (1) のように別のアウトレットを使用します。SideBarViewControllerUIViewUITableView

3)あなたの方法viewForLeftSideBarは次のようになります

- (UIView *)viewForLeftSidebar {
CGRect viewFrame = self.navigationController.applicationViewFrame;
// Assuming that self.leftSidebarController is already initialized up above.
if(self.leftSidebarViewController == nil){
self.leftSidebarViewController = [[SideBarViewController alloc] initWithNibName:@"SideBarViewController" bundle:nil];
}

self.leftSidebarViewController.view.frame = CGRectMake(0, viewFrame.origin.y, 270, viewFrame.size.height);
self.leftSidebarViewController.view.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight;
return self.leftSidebarViewController.view;
 }

お役に立てば幸いです。

于 2013-10-12T03:38:08.733 に答える