【问题标题】:UITableView using ECSlidingViewController not PopulatingUITableView 使用 ECSlidingViewController 不填充
【发布时间】:2013-06-14 08:16:21
【问题描述】:

我正在尝试使用下面的代码在 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];
    }];
}

【问题讨论】:

  • 如果你把 NSLog(@"%@", self.menuItems);在 tableView:numberOfRowsInSection: 中,它打印什么?
  • 我很确定你的数组是空的。

标签: iphone objective-c uitableview


【解决方案1】:

1) 一定要在IB中连接datasource和delegate outlet,并且

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

- (void)viewWillAppear:(BOOL)animated {

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

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

【讨论】:

  • 我明白了!这只是一个菜鸟的错误。忘记连接数据源并委托回视图控制器。 Palm on face 这个答案让我想仔细检查一下我的网点,所以谢谢!
  • 很高兴它有帮助。我将进行编辑,以便下一个人更清楚答案。顺便说一句,我想我已经为 IB 中的视图控制器添加了数百个表,但我仍然忘记了连接数据源和委托大多数时间。然后我看到了空白的桌子,还有我的手掌——所以我应该首先猜到。 (我认为你也需要重新加载)
【解决方案2】:

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

您可能想查看this 以了解有关 awakeFromNib、viewDidLoad、initWithNibName 的讨论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 2014-02-08
    • 2013-06-08
    相关资源
    最近更新 更多