UITableView
의 내용을 새로 고침하는 데 문제가 있습니다. UITableView
에 회원 목록을 표시하려고합니다. 이 목록 위에는 그룹 선택을위한 일종의 드롭 다운 메뉴가 있습니다. 그래서 드롭 다운 메뉴에서 선택한 그룹을 변경하면 그 아래에있는 UITableView의 내용을 변경하려고합니다. 실제로 제대로 작동하지 않습니다. UITableView
이 포함 된 ViewController
을 처음로드하면 기본 그룹에 올바른 구성원 목록이 표시됩니다. 이제 그룹을 변경하면 구성원 목록이 새로 표시되지만 표시되지는 않습니다. UITableView
은 테이블 내용을 다시로드하지 않는 것으로 보입니다. 가 여기에 TableViewController
내 코드입니다 : 지금은 다른 ViewController
는 MemberListViewController
, 그것은이 MemberTableViewController
포함되어 있습니다Reload Content of UITableView
MemberTableViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
self.members = [NSMutableArray new];
self.selectedRows = [NSMutableArray new];
self.groupManager = [GroupManager new];
int *number;
if (nil != [self gruppeId]) {
number = [[self gruppeId] intValue]; // Here will be the id of the new selected group
} else {
number = 4010292; // This is just for testing. It's the id of my default group
}
for (Group *group in [self.groupManager findGroupWithID:[NSNumber numberWithInt:number]]) {
for (Member *member in group.member) {
[self.members addObject:member];
}
}
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
[self.gruppenMitglieder sortUsingDescriptors:[NSArray arrayWithObject:sort]];
[self.tableView setAllowsMultipleSelection:YES];
[self.tableView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [[self members] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
GreenTexturedCell *cell = nil;
Member *member = [self members][indexPath.row];
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"GreenTexturedCell" owner:nil options:nil];
for (UIView *view in views) {
if([view isKindOfClass:[UITableViewCell class]]) {
cell = (GreenTexturedCell*)view;
}
}
cell.textLabel.text = member.name;
cell.textLabel.font = [UIFont fontWithName:@"JandaCloserToFree" size:14.0];
cell.textLabel.textColor = [UIColor whiteColor];
return cell;
}
(내가 아는을 명명은 ... 최고의 아니다). MemberListViewController
은 GroupSelectionTableViewController
의 프로토콜을 구현합니다. 선택된 그룹이 변경되면 델리게이트 함수가 호출됩니다. MemberListViewController.h
@interface MemberListViewController : UIViewController <GroupSelectionDelegate>
@property (weak, nonatomic) IBOutlet UIButton *groupSelection;
@property (nonatomic, strong) GroupSelectionTableViewController *groupTableView;
- (IBAction)groupSelectionPressed:(id)sender;
@end
MemberListViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
[self setGroupTableView:[GroupSelectionTableViewController new]];
[[self groupTableView] setDelegate:self];
}
- (IBAction)gruppeAuswahlPressed:(id)sender {
if ([self groupListShown]) {
[[[self groupTableView] view] removeFromSuperview];
[self setGroupListShown:NO];
} else {
[self.view addSubview:[[self groupTableView] view]];
[self setGroupListShown:YES];
}
}
- (void) groupSelectionController:(GroupSelectionTableViewController *)groupSelection DidSelectGroupWithId:(NSString *) groupId {
[[self groupSelection] setTitle:name forState:UIControlStateNormal];
[[[self groupTableView] view] removeFromSuperview];
[self setGroupListShown:NO];
MemberTableViewController *memberTableView = [self.storyboard instantiateViewControllerWithIdentifier:@"memberTable"];
[memberTableView setGroupId:[NSNumber numberWithInt:4017411]]; // Id for testing
[memberTableView refreshControl];
} 나는 그룹 선택을 변경하면 -groupSelectionController:DidSelectGroupWithId:
방법이 호출되고,
이제 다음은 MemberListViewController
의 코드는 [memberTableView refreshControl]
MemberTableViewController
의 방법으로 다시 들어가서 groupId를 테스트 ID로 설정할 수 있습니다. 이제 TableView에서 선택한 그룹의 구성원을 가져 오기 위해 내용을 다시로드해야합니다. 성명 [self.tableView reloadData]
tableView:NumberOfRowsInSection:
방법으로 들어갈 수 있지만 tableView : CellForRowAtIndexPath : 메서드 및 TableView 내용으로 다시 그려지지 않습니다. 내가 잘못 뭐하는 거지
? 이 문제는 나를 괴롭 히고 있습니다. 그래서 나를 도와 줄 누군가가 있기를 바랍니다. 감사합니다.
numberOfRowsInSection이 반환하는 항목을 기록 했습니까? 일반적으로 그 메소드가 호출되었지만 cellForRowAtIndexPath가 아닌 경우, 행 수가 0이기 때문입니다. – rdelmar
예. 처음으로 12를 반환하면 그룹을 변경하면 선택한 그룹의 올바른 멤버 수인 6이 반환됩니다. – matthisb
테이블이 다시 그려지지 않는 약간의 길을 잃었습니다. 회원 테이블보기입니까? 그렇다면 [memberTableView refreshControl]을 [memberTableView reloadData]로 변경하고 도움이되는지 확인하십시오. – rdelmar