我在xcode中遇到了问题。我想要两个数组和两个tableview相同的视图控制器。我的tableviews标签1001和2002.我调用Web服务并成功创建我的数组。我运行它,只有table1(标签1001)显示值。 2002年零。我的代码是:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView.tag == 1001)
{
return 1;
}
else
{
return 1;
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(tableView.tag==1001)
{
NSLog(@"self.Data count: %lu", (unsigned long)[menuData count]);
return [menuData count];
}
else
NSLog(@"self.İçkiler: %lu", (unsigned long)[icecekData count]);
return [icecekData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
int indicator = UITableViewCellAccessoryDisclosureIndicator;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
NSString * cellValue;
if (tableView.tag==1001)
{
veriler=[menuData objectAtIndex:[indexPath row]];
NSLog(@"Name : %@ ", veriler.menuadi);
cellValue= veriler.menuadi;
}
if (tableView.tag==2002)
{
veriler=[icecekData objectAtIndex:[indexPath row]];
NSLog(@"Name : %@ ", veriler.icecek);
cellValue= veriler.icecek;
}
cell.textLabel.text=cellValue;
cell.selectionStyle=UITableViewCellSelectionStyleNone;
return cell;
}
我的代码有什么问题。请你帮帮我吧。 感谢。
答案 0 :(得分:0)
在numberOfRowsInSection
的else语句中,请确保将其包含在{}中。只有NSLog有条件地运行,而return [icecekData count]
始终无条件地运行
应该是这样的:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(tableView.tag==1001)
{
NSLog(@"self.Data count: %lu", (unsigned long)[menuData count]);
return [menuData count];
}
else
{
NSLog(@"self.İçkiler: %lu", (unsigned long)[icecekData count]);
return [icecekData count];
}
}
答案 1 :(得分:0)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(tableView.tag==1001)
{
NSLog(@"self.Data count: %lu", (unsigned long)[menuData count]);
return [menuData count];
}
else
{
NSLog(@"self.İçkiler: %lu", (unsigned long)[icecekData count]);
return [icecekData count];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellidentifier=@"cell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellidentifier];
if(cell==nil)
{
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellidentifier];
}
if (tableView.tag==1001)
{
veriler=[menuData objectAtIndex:[indexPath row]];
NSLog(@"Name : %@ ", veriler.menuadi);
cellValue= veriler.menuadi;
}
if (tableView.tag==2002)
{
veriler=[icecekData objectAtIndex:[indexPath row]];
NSLog(@"Name : %@ ", veriler.icecek);
cellValue= veriler.icecek;
}
cell.textLabel.text=cellValue;
cell.selectionStyle=UITableViewCellSelectionStyleNone;
return cell;
}
// Edited
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
menuData = [[NSMutableArray alloc] init];
[menuData retain];
icecekData = [[NSMutableArray alloc] init];
[icecekData retain];
[self callwebservice];
[itablo reloadData];
[mtablo reloadData];
}
// Please check the Delegate and Datasource setting for both TableView
答案 2 :(得分:0)
我认为您需要检查基本的东西,例如,如果您已在Xib中为第二个表视图连接了正确的插座,还要检查委托和数据源方法是否已连接。如果您将其设置为2002 tableview,那么如果正确的话还可以检查标记值。
答案 3 :(得分:0)
我解决了问题。谢谢@Monikanta你是对的。我使用[self.itable reloadData]
但不使用方法
- (void)viewDidLoad
。因为我被称为网络服务。我的代码现在是:
-(void) connectionDidFinishLoading:(NSURLConnection *) connection {
NSLog(@"DONE. Received Bytes: %d", [webData length]);
NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding: NSUTF8StringEncoding];
[theXML release];
if (xmlParser)
{
[xmlParser release];
}
xmlParser = [[NSXMLParser alloc] initWithData: webData];
[xmlParser setDelegate: self];
[xmlParser parse];
[self.mtablo reloadData];
[self.itablo reloadData];
[connection release];
[webData release];
}
编辑前是:
-(void) connectionDidFinishLoading:(NSURLConnection *) connection {
NSLog(@"DONE. Received Bytes: %d", [webData length]);
NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding: NSUTF8StringEncoding];
[theXML release];
if (xmlParser)
{
[xmlParser release];
}
xmlParser = [[NSXMLParser alloc] initWithData: webData];
[xmlParser setDelegate: self];
[xmlParser parse];
[self.mtablo reloadData]; // I ADD [self.itablo reloadData];
[connection release];
[webData release];
}