のコンテンツの更新に問題がありUITableView
ます。にメンバーのリストを表示しようとしていますUITableView
。このリストの上に、グループ選択のためのある種のドロップダウンメニューがあります。したがって、ドロップダウンメニューで選択したグループを変更する場合は、その下にあるUITableViewのコンテンツを変更します。実際には正しく機能していません。ViewController
を含むを初めてロードするとUITableView
、デフォルトグループのメンバーの正しいリストが表示されます。これで、グループを変更すると、新しいメンバーのリストが表示されますが、表示されません。UITableView
テーブルの内容をリロードすらしないようです。これが私のコードですTableViewController
:
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;
}
今、私は別ViewController
のものを持ってMemberListViewController
います、それは含まれていますMemberTableViewController
(私は知っています、命名は最高ではありません...)。のMemberListViewController
プロトコルを実装しますGroupSelectionTableViewController
。選択したグループが変更されると、そのデリゲート関数が呼び出されます。MemberListViewController
これが: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:
メソッドが呼び出され、もう一度メソッドにアクセスして、groupIdをテストIDに設定[memberTableView refreshControl]
できます。次に、TableViewにコンテンツをリロードして、選択したグループのメンバーを取得します。ステートメントを使用して、メソッドにはアクセスしますが、tableView:CellForRowAtIndexPath:メソッドにはアクセスしませんが、TableViewコンテンツは再描画されません。viewDidLoad
MemberTableViewController
[self.tableView reloadData]
tableView:NumberOfRowsInSection:
私は何を間違っているのですか?この問題は私を狂わせているので、誰かが私を助けてくれることを願っています。ありがとう