0

我在我的 SideBarViewController 的类 xib 文件中有这个 TableViewController(由 IBOutlet sideTable 挂钩的接口构建器对象),我试图在我的 ViewController 中填充它(有点像 Facebook 的应用程序侧菜单)。出于某种原因,我无法让它工作。如果我将 SideBarViewController 类设为 tableviewcontroller 的子类并在其实现文件中以编程方式自定义 tableview,则效果很好。但我更喜欢使用xib。任何提示将不胜感激。

视图控制器.h

      @property (nonatomic, strong) SidebarViewController *leftSidebarViewController;

视图控制器.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中,钩视图SideBarViewControllerUIView。view 不应该与UITableView. 对于 tableView ,使用步骤 (1) 中的单独插座。

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 回答