菜鸟教程小白 发表于 2022-12-12 08:52:22

ios - 重新加载 UITableView 的内容


                                            <p><p>我在刷新 <code>UITableView</code> 的内容时遇到问题。我正在尝试在 <code>UITableView</code> 中显示成员列表。在此列表上方,我有一些用于组选择的下拉菜单。因此,如果我更改在下拉菜单中选择的组,我想更改它下面的 UITableView 的内容。它实际上无法正常工作。
第一次加载包含 <code>UITableView</code> 的 <code>ViewController</code> 时,它会显示默认组中的正确成员列表。现在,当我更改组时,它应该显示我的新成员列表,但它没有。似乎 <code>UITableView</code> 甚至不会重新加载其表格内容。
这是我的 <code>TableViewController</code> 代码:</p>

<p>MemberTableViewController.m</p>

<pre><code>- (void)viewDidLoad {
;

self.members = ;
self.selectedRows = ;
self.groupManager = ;

int *number;
if (nil != ) {
      number = [ intValue]; // Here will be the id of the new selected group
} else {
    number = 4010292; // This is just for testing. It&#39;s the id of my default group
}

for (Group *group in ]) {

    for (Member *member in group.member) {
      ;
    }
}

NSSortDescriptor *sort = ;
];
;
;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return[ count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    GreenTexturedCell *cell = nil;
    Member *member = ;
    NSArray* views = [ loadNibNamed:@&#34;GreenTexturedCell&#34; owner:nil    options:nil];

    for (UIView *view in views) {
      if(]) {
            cell = (GreenTexturedCell*)view;
      }
    }


    cell.textLabel.text = member.name;
    cell.textLabel.font = ;
    cell.textLabel.textColor = ;

    return cell;
}
</code></pre>

<p>现在我有另一个<code>ViewController</code> <code>MemberListViewController</code>,它包含<code>MemberTableViewController</code>(我知道,命名不是最好的...) . <code>MemberListViewController</code> 实现了<code>GroupSelectionTableViewController</code> 的协议(protocol)。当所选组更改时,将调用其委托(delegate)函数。下面是 <code>MemberListViewController</code> 的代码:
MemberListViewController.h</p>

<pre><code>@interface MemberListViewController : UIViewController &lt;GroupSelectionDelegate&gt;
@property (weak, nonatomic) IBOutlet UIButton *groupSelection;
@property (nonatomic, strong) GroupSelectionTableViewController *groupTableView;
- (IBAction)groupSelectionPressed:(id)sender;
@end
</code></pre>

<p>MemberListViewController.m</p>

<pre><code>- (void)viewDidLoad
{
    ;
    ];
    [ setDelegate:self];
}

- (IBAction)gruppeAuswahlPressed:(id)sender {

    if () {
      [[ view] removeFromSuperview];
      ;
    } else {
       view]];
      ;
    }
}

- (void) groupSelectionController:(GroupSelectionTableViewController *)groupSelection DidSelectGroupWithId:(NSString *) groupId {
    [ setTitle:name forState:UIControlStateNormal];
    [[ view] removeFromSuperview];
    ;
    MemberTableViewController *memberTableView = ;
    ]; // Id for testing
    ;
</code></pre>

<p>}</p>

<p>现在,如果我更改组选择,将调用 <code>-groupSelectionController:DidSelectGroupWithId:</code> 方法并使用 <code></code> 我可以进入 <再次使用 <code>MemberTableViewController</code> 的 code>viewDidLoad</code> 方法并将 groupId 设置为我的测试 ID。现在我希望 TableView 重新加载其内容以获取所选组的成员。使用语句 <code></code> 我进入 <code>tableView:NumberOfRowsInSection:</code> 方法,但没有进入 tableView:CellForRowAtIndexPath: 方法,并且 TableView 内容没有重绘.</p>

<p>我做错了什么?
这个问题把我逼疯了,所以我希望有人能帮助我。
谢谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>使用 <code>instantiateViewControllerWithIdentifier</code> 您正在创建 <code>MemberTableViewController</code> 的新实例,这不是您在屏幕上显示的实例。因此,您不会看到应该通过调用 reloadData 显示的更改。</p>

<p>为了能够重新加载表格数据,您可以在 MemberListViewController 中添加指向表格的链接。将.h的代码更改为:</p>

<pre><code>#import &#34;MemberTableViewController.h&#34;
@interface MemberListViewController : UIViewController &lt;GroupSelectionDelegate&gt;
{
    IBOutlet MemberTableViewController *memberTableView;
}
@property (weak, nonatomic) IBOutlet UIButton *groupSelection;
@property (nonatomic, strong) GroupSelectionTableViewController *groupTableView;
- (IBAction)groupSelectionPressed:(id)sender;
@end
</code></pre>

<p>然后,在.m中,可以调用;</p>

<p>不要忘记在 Storyboard 文件中将 <code>memberTableView</code> 设置为“新引用导出”。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 重新加载 UITableView 的内容,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/14961729/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/14961729/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 重新加载 UITableView 的内容