tableView.reloadData()表未更新

时间:2017-08-17 13:32:25

标签: ios swift swift3

该表不显示更新的数组以返回单元格。当我启动应用程序时,我得到空白单元格。故事板中已给出所有权限。我试过onCreateViewHolder到处都是,但似乎也无法使它工作。如果有人能解释我哪里出错会真正帮助我变得更好。

tableView.reloadData()

3 个答案:

答案 0 :(得分:3)

像这样添加tableview的出口并连接故事板中的表 -

public async Task<Permissions> GetPermissions(HttpContext httpContext)
{
    _httpContext = httpContext;
    // await result
    await PopulateUserIdAndIsAdminFlag();
    var permissions = new Permissions
    {
      UserId = _userId,
      IsAdministrator = _isAdministrator
    };

    // wrapping the result in Task is no longer necessary 
    return permissions;
}

// change void to Task
private async Task PopulateUserIdAndIsAdminFlag()
{
    if (!IsAuthenticated()) return;
    var username = _httpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);
    var user = await _userManager.FindByNameAsync(username);
    var roles = await _userManager.GetRolesAsync(user);
    _userId = user.Id;
    _isAdministrator = roles.Contains("Admin");
}

将代码更改为 -

@IBOutlet weak var tableView1: UITableView!

答案 1 :(得分:2)

通过调用tableView.reloadData()内的cellForRowAt,您可以创建一个无限循环,因为reloadData()会自动调用cellForRowAt。您需要在reloadData()内移动tableGenerate(),因为只有在您的数据源发生更改时才会调用它。

您还需要在Storyboard中为tableView创建一个IBOutlet。由于您未使用UITableViewController,因此需要手动执行此操作。

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var tableView: UITableView!
    @IBOutlet weak var slider: UISlider!

    @IBAction func sliderSelector(_ sender: Any) {
        tableGenerate()
    }

    var arrayTable = [Int]()

    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return arrayTable.count
    }

    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style:UITableViewCellStyle.default, reuseIdentifier: "Cell")
        cell.textLabel?.text = String(arrayTable[indexPath.row])
        return cell
    }

    func tableGenerate () {
        var tableMultiplier = 1
        while tableMultiplier <= 50 {
            arrayTable.append(tableMultiplier * Int(slider.value))
            tableMultiplier += 1
            print(arrayTable)
        }
        tableView.reloadData()
    }
}

答案 2 :(得分:-1)

忘了创建桌面插座!我也忘了使用arrayTable = []重置阵列滑块,现在它可以正常工作