iOS 5,故事板,ARC:创build和设置自定义委托和数据源到程序。 创build了UITableView

这个问题的前传就在这里 。

我想创build和设置自定义委托和数据源到我的程序创build的UITableView。 我一直在search,但找不到任何明确的解决scheme,我的问题。

同时,我创build了一个符合UITableViewDelegate,UITableViewDataSource协议的新类。 在这门课上:

tableView numberOfRowsInSection:20 tableView cellForRowAtIndexPath:cell.textLabel.text = @“Nominals”;

包含UIViews的类:

创buildUITableView的方法:

-(IBAction)segmentValueChaged:(id)sender { if(self.segment.selectedSegmentIndex==0) { [self.coinageView removeFromSuperview]; [self.view addSubview:nominalsView]; [self populateNominals:self.subCountryID]; } else { [self.nominalsView removeFromSuperview]; [self.view addSubview:coinageView]; [self populateCoinages:self.subCountryID]; } } -(void)populateNominals:(int)subCountryID { NominalsTableViewDelegate *del=[[NominalsTableViewDelegate alloc]init]; UITableView *nominalsTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 372) style:UITableViewStylePlain]; [nominalsTableView setDelegate:del]; [nominalsTableView setDataSource:del]; [self.nominalsView addSubview:nominalsTableView]; [nominalsTableView reloadData]; } 

最后,我得到了EXC_BAD_ACCESS。 邪恶在[nominalsTableView setDelegate:del]; [nominalsTableView setDataSource:del]; 行。 他们怎么了。

非常感谢帮助。 提前致谢。

我不确定你是否在当前的视图中添加了一个新的UITableView,但是我会认为你正在这样做。

如果你有一个符合UITableViewDelegate的类。 但是当我需要以编程方式创buildUITableView时,我创build了一个新的UITableView类(使用.h和.m),然后创build一个MutableArray并将其作为属性公开给父视图,以便设置数据源。

从那里,你可以创build一个类的实例和数据源(你从子对象公开的)。 最后,您将视图添加到当前视图。 这种方法你不需要设置委托,因为你的子类符合tableview委托协议。

如果你只是在当前的tableview中修改数据,那么你使用一个NSMutableArray ,然后改变其中的数据。 之后再做一个

  [self.tableView reloadData]; 

希望这可以帮助!

EDITED

我可能误解了你的问题,你(很有可能)需要做的是创build一个委托类的属性,然后创build一个你的delgate类的实例,并将其分配给属性。

然后做一个

  [myTableView setDelegate:self.myProperty]; [myTableView setDatasource:self.myProperty]; 

我相信,这将解决你的访问不好的问题。

再次编辑

在tableview类的.h中创build一个属性,如下所示:

  @property (nonatomic, retain) NominalsTableViewDelegate *myDelegate; 

从那里然后在你的.m文件中,你做类似的事情:

 NominalsTableViewDelegate* delegateClass = [[NominalsTableViewDelegate alloc] init]; [self setMyDelegate:delegateClass]; [delegateClass release]; 

然后你可以设置你的tableview数据源如下:

 [myTableView setDelegate:self.myDelegate]; [myTableView setDatasource:self.myDelegate]; 

注意 :我目前无法访问一台机器来testing这个function,但只是指出了一些东西。