0

我正在尝试使用下面的代码在 ECSlidingViewController(a UITableVIEW) 中填充菜单,但是当我运行应用程序时,菜单或 uitableview 是空白的,并且没有填充 3 个 MenuItem;重要、邀请和议程。我怀疑问题出在 didSelectRowAtIndexPath 中,但我不确定。对此的任何帮助将不胜感激。谢谢你。

#import "MenuViewController.h"

@interface MenuViewController ()
@property (nonatomic, strong) NSArray *menuItems;

@end

@implementation MenuViewController
@synthesize menuItems;

- (void)awakeFromNib
{
    self.menuItems = [NSArray arrayWithObjects:@"Important", @"Invitation", @"Agenda", nil];
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.slidingViewController setAnchorRightRevealAmount:280.0f];
    self.slidingViewController.underLeftWidthLayout = ECFullWidth;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sectionIndex
{
    return self.menuItems.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *cellIdentifier = @"MenuItemCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
    }

    cell.textLabel.text = [self.menuItems objectAtIndex:indexPath.row];

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *identifier = [NSString stringWithFormat:@"%@", [self.menuItems objectAtIndex:indexPath.row]];

    UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:identifier];

    [self.slidingViewController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^{
        CGRect frame = self.slidingViewController.topViewController.view.frame;
        self.slidingViewController.topViewController = newTopViewController;
        self.slidingViewController.topViewController.view.frame = frame;
        [self.slidingViewController resetTopView];
    }];
}
4

2 回答 2

0

1) 确保在 IB 中连接数据源和委托出口,并且

2) MenuViewController 是 UITableViewController 的子类吗?如果没有,那么我认为您将需要自己在某个地方加载表数据。尝试这个:

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];
    [self.tableView reloadData];      // need to have an outlet named this
}

如果您没有一个名为 tableView 的出口设置,指向表视图,请在 IB 中创建一个。

于 2013-06-13T22:18:55.587 回答
0

我怀疑你的 menuItems 数组是空的。尝试在 viewDidLoad 中填充它。

你可能想看看这个关于 awakeFromNib、viewDidLoad、initWithNibName 的讨论。

于 2013-06-13T21:50:42.643 回答