代码之家  ›  专栏  ›  技术社区  ›  rano

UITableView:以编程方式设置数据源

  •  3
  • rano  · 技术社区  · 14 年前

    在我的iPhone应用程序中,我有一个UIViewController,它有一个UITableView和另一个UIView,在它的xib文件中,xib的视图同时包含UITableView和另一个UIView。这两个视图都作为iboutlet链接到xib文件中的相应视图。 当我想以编程方式为UITableView设置数据源时,我在UIViewController中创建了如下方法:

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil tableDataSource:(id)dataSource{
    if ((self = [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
        // Custom initialization
        self.inventoryTableView.dataSource = dataSource;
        //[self.inventoryTableView reloadData];
    }
    return self;}
    

    然后我在我的另一个类中实现了以下方法,我们称之为B:

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
    

    initWithNibName:bundle:tableDataSource: 创建UIViewController。所有视图都出现在模拟器中,但数据源方法似乎没有被调用。 我对另一个控制器做了类似的操作,但它是UITableViewController,而TableView是控制器的视图。作为一个子视图,我是否有可能在另一个不同于initWithNib的方法中设置数据源?

    更新: viewDidLoad: 方法我能解决它。我觉得即使打了电话 [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil] 主视图的子视图没有正确初始化

    2 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    7 年前

    看看这个答案,我认为它类似于您所建议的使用“B”作为控制器的外部数据源。

    Simple way to separate UITableview datasource and delegate from main UIViewController class?

        2
  •  0
  •   rano    14 年前

    正如在更新和评论中所说的,我通过更改委托/数据源的设置位置来解决问题,因为需要等待tableView被分配和初始化。在我看来,作为子视图,它的分配/初始化比类的主视图晚