分页TableView,但DataSource / Delegates不执行

时间:2012-09-25 23:36:46

标签: objective-c uitableview delegates datasource paging

我在获取数据源或委托方法时遇到问题。

我在MainViewController中使用Paging View并且它的页面很好,但是当涉及到tableview是空白的时候,当我在数据源方法的位置放置一个断点时,它永远不会被调用。

加载视图的MainViewController

 if ((NSNull *)controller2 == [NSNull null])
{
    if(page == 2)
    {
        controller2 = [[requestDetailThreeViewController alloc] initWithRequestNumber:[request objectForKey:@"RequestID"]];
        [viewControllers replaceObjectAtIndex:page withObject:controller2];
        CGRect frame = scrollView.frame;
        frame.origin.x = frame.size.width * 2;
        frame.origin.y = 0;
        controller2.view.frame = frame;
        [scrollView addSubview:controller2.view];
    }

}

TableViewController(requestDetailThreeViewController)

    - (void)viewDidLoad
 {
   [super viewDidLoad];



[History fullHistoryWithBlock:^(NSArray *netMessages, NSError *error) {
    if (error) {

        [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error", nil) message:   [error localizedDescription] delegate:nil cancelButtonTitle:nil otherButtonTitles:NSLocalizedString(@"OK", nil), nil] show];
    } else {
        NSLog(@"Number of Historical Entries: %d", [netMessages count]);

        self.historyFromNet = [NSMutableArray arrayWithArray:netMessages];
    }

} forID:requestNum];

}


   - (id) initWithRequestNumber:(NSString *)requestID
 {

     if (self = [super initWithNibName:@"View" bundle:nil])
  {
      self.requestNum = requestID;
  }
  return self;

}

(为第二段代码的间距道歉,很难将其置于代码模式。 它执行这两种方法,但它不会执行我在类中也有的数据源方法。

在XIB文件中,我将xib的所有者设置为requestDetailThreeViewController tableView设置为datasource / delegate和view

如果我将tableview设置为隐藏在ViewDidLoad中,它确实会消失。

我无法让它执行填充表格的方法。

更新:

更多信息 -

View XIB中只有一个TableView,没有控制器。

谢谢! 艾伦

2 个答案:

答案 0 :(得分:0)

您正在添加子视图控制器,因此您需要使用UIViewController包含方法。

类似的东西:

    controller2 = [[requestDetailThreeViewController alloc] initWithRequestNumber:[request objectForKey:@"RequestID"]];
    [viewControllers replaceObjectAtIndex:page withObject:controller2];
    [self addChildViewController:controller2];
    CGRect frame = scrollView.frame;
    frame.origin.x = frame.size.width * 2;
    frame.origin.y = 0;
    controller2.view.frame = frame;
    [scrollView addSubview:controller2.view];
    [controller didMoveToParentViewController:self];
}

另外考虑使用UIPageViewController作为分页视图,而不是通过滚动视图手动执行

答案 1 :(得分:0)

您可以尝试在self.tableView.delegate = self中设置-(void)viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.tableView.delegate = self;
}