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,但只是指出了一些东西。