UITableView的第一个section从来没有正确的内容



我有一个从未正常工作的UITableView。这个表视图有两个部分。

我已经创建了2个uibutton,它们几乎都是相同的图像,但一个是灰色的,一个是红色的。

当UITableView第一次加载时,UITableView中的每一行都应该有灰色按钮,然后如果用户点击该行的按钮,那么它会切换到红色版本的按钮。

由于某些原因,当我在iPhone上用这个UITableView加载视图控制器时,第一部分中的行永远不会有按钮。奇怪的是,如果我点击我的手指应该是按钮发生了两件事:

  1. 附加到按钮的功能在xcode的控制台中工作和nlog。

  2. 红色按钮出现

就像灰色按钮一样,它是不可见的。这不起作用,因为如果用户看到没有按钮的行,他们会认为有些东西坏了,或者他们不能点击那一行。

同样,如果我滚动到UITableView的最底部,然后再向上滚动,不可见的灰色按钮会神奇地出现,就像它们一直在那里一样。

什么是有趣的,是textLabel和detailTextLabel总是可见的,总是正确的第一部分,但由于某种原因,按钮就是不想正确工作。

下面是创建UITableView的前3个方法实现:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 2 ;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

if(section == 0)
    return [self.potentiaFriendsInParseFirstNamesArray count];
if(section == 1)
    return [self.potentiaFriendsNotInParseFirstNamesArray count];
else return 0;

}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
 if(section == 0)
    return @"Friends Using The App";
 if(section == 1)
    return @"Send to Contact";
 else return @"nil";
}

然后这里是我的cellForRowAtIndexPath功能实现它在创建UITableView中做大部分工作它实际上为每一行创建UIButton设置。if else语句实际上有两组几乎相同的代码,唯一不同的是一组用于表视图的section 1另一组用于section 2:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

 static NSString *cellIdentifier = @"SettingsCell";

 UITableViewCell  *cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];

  if (indexPath.section == 0) {

   NSString *firstNameForTableView = [self.potentiaFriendsInParseFirstNamesArray objectAtIndex:indexPath.row];

   PFUser *user = [self.allUsersInParse objectAtIndex:indexPath.row];

    UIImage *addUserButtonImage = [UIImage imageNamed:@"SliderThumb-Normal-g"];
    UIImage *addUserButtonImageHighlighted = [UIImage imageNamed:@"SliderThumb-Normal"];

    UIButton *addUserButton = [[UIButton alloc]init];
    addUserButton.frame = CGRectMake(237, -10, 64, 64);

[addUserButton setImage:addUserButtonImage forState:UIControlStateNormal];
[addUserButton setImage:addUserButtonImageHighlighted forState:UIControlStateHighlighted];
[addUserButton setImage:addUserButtonImageHighlighted forState:UIControlStateSelected];

[addUserButton addTarget:self action:@selector(handleTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];

addUserButton.tag = indexPath.row;

[cell.textLabel setText:firstNameForTableView];
[cell.detailTextLabel setText:user.username];
[cell.contentView addSubview:addUserButton];

} else {

NSString *firstNameForTableView2 = [self.potentiaFriendsNotInParseFirstNamesArray objectAtIndex:indexPath.row];

NSString *userNameForTableView2 = [self.potentiaFriendsPhoneNumberArray objectAtIndex:indexPath.row];

UIImage *addFriendButtonImage = [UIImage imageNamed:@"SliderThumb-Normal-G"];
UIImage *addFriendButtonImageHighlighted = [UIImage imageNamed:@"SliderThumb-Normal"];

UIButton *addFriendButton = [[UIButton alloc]init];

addFriendButton.frame = CGRectMake(237, -10, 64, 64);

  [addFriendButton setImage:addFriendButtonImage forState:UIControlStateNormal];
  [addFriendButton setImage:addFriendButtonImageHighlighted forState:UIControlStateHighlighted];
  [addFriendButton setImage:addFriendButtonImageHighlighted forState:UIControlStateSelected];

[addFriendButton addTarget:self action:@selector(handleTouchUpInsideForNonUsers:) forControlEvents:UIControlEventTouchUpInside];

addFriendButton.tag = indexPath.row;

[cell.textLabel setText:firstNameForTableView2];
[cell.detailTextLabel setText:userNameForTableView2];
[cell.contentView addSubview:addFriendButton];

    }

  return cell;
}

这简直要把我逼疯了,我在过去的9个小时里一直在试图弄清楚这个问题,但还是没有弄清楚。

图像名称区分大小写,addUserButtonImage是"SliderThumb-Normal-g"在你的第一节,而它是"SliderThumb-Normal-g"在第二节!

相关内容

最新更新