NSTableView单元格文本未更改

时间:2016-10-11 09:42:18

标签: objective-c xcode macos nstableview

我在我的osx应用程序中使用NSTableView

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
    if (tableView == self.categoryTable) {
        return [[[AppAPI shared] categoryArr] count];
    }
    return 0;
}

- (nullable id)tableView:(NSTableView *)tableView objectValueForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row {
    if (tableView == self.categoryTable) {
        NSTableCellView *cellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];

        CategoryItem * cat = [[AppAPI shared] categoryArr][row];

        cellView.textField.stringValue = cat.name;

        return cellView;
    }

    return nil;
}

我使用此代码将数据插入到表中,但我得到的是包含此文本的行:enter image description here

cellView不是

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

您使用了错误的委托/数据源方法

/* The format string for device login instructions */ "DeviceLogin.LogInPrompt" = "Visit %@ on your smartphone or computer and enter the above code."; /* The title of the label to dismiss the alert when presenting user facing error messages */ "ErrorRecovery.Alert.OK" = "OK"; /* The title of the label to decline attempting error recovery */ "ErrorRecovery.Cancel" = "Cancel"; /* The fallback message to display to recover invalidated tokens */ "ErrorRecovery.Login.Suggestion" = "Please log into this app again to reconnect your Facebook account."; /* The title of the label to start attempting error recovery */ "ErrorRecovery.OK" = "OK"; /* The fallback message to display to retry transient errors */ "ErrorRecovery.Transient.Suggestion" = "The server is temporarily busy, please try again."; /* The label for the FBSDKLikeButton when the object is not currently liked. */ "LikeButton.Like" = "Like"; /* The label for the FBSDKLikeButton when the object is currently liked. */ "LikeButton.Liked" = "Liked"; /* The label for the FBSDKLoginButton action sheet to cancel logging out */ "LoginButton.CancelLogout" = "Cancel"; /* The label for the FBSDKLoginButton action sheet to confirm logging out */ "LoginButton.ConfirmLogOut" = "Log Out"; /* The fallback string for the FBSDKLoginButton label when the user name is not available yet */ "LoginButton.LoggedIn" = "Logged in using Facebook"; /* The format string for the FBSDKLoginButton label when the user is logged in */ "LoginButton.LoggedInAs" = "Logged in as %@"; /* The short label for the FBSDKLoginButton when the user is currently logged out */ "LoginButton.LogIn" = "Log in"; /* The long label for the FBSDKLoginButton when the user is currently logged out */ "LoginButton.LogInLong" = "Log in with Facebook"; /* The label for the FBSDKLoginButton when the user is currently logged in */ "LoginButton.LogOut" = "Log out"; /* The user facing error message when the app slider has been disabled and login fails. */ "LoginError.SystemAccount.Disabled" = "Access has not been granted to the Facebook account. Verify device settings."; /* The user facing error message when the Accounts framework encounters a network error. */ "LoginError.SystemAccount.Network" = "Unable to connect to Facebook. Check your network connection and try again."; /* The user facing error message when the device Facebook account password is incorrect and login fails. */ "LoginError.SystemAccount.PasswordChange" = "Your Facebook password has changed. To confirm your password, open Settings > Facebook and tap your name."; /* The user facing error message when the device Facebook account is unavailable and login fails. */ "LoginError.SystemAccount.Unavailable" = "The Facebook account has not been configured on the device."; /* The user facing error message when the Facebook account signed in to the Accounts framework becomes unconfirmed. */ "LoginError.SystemAccount.UnconfirmedUser" = "Your account is not confirmed. Please log in to www.facebook.com and follow the instructions given."; /* The user facing error message when the Facebook account signed in to the Accounts framework has been checkpointed. */ "LoginError.SystemAccount.UserCheckpointed" = "You cannot log in to apps at this time. Please log in to www.facebook.com and follow the instructions given."; /* The message of the FBSDKLoginTooltipView */ "LoginTooltip.Message" = "New! You're in control - choose what info you want to share with apps."; /* Title of the web dialog that prompts the user to log in to Facebook. */ "LoginWeb.LogInTitle" = "Log In"; /* The label for FBSDKSendButton */ "SendButton.Send" = "Send"; /* The label for FBSDKShareButton */ "ShareButton.Share" = "Share"; 应该返回行的对象

objectValueForTableColumn:row

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { return [[AppAPI shared] categoryArr][row]; } 返回视图。

viewForTableColumn:row:

PS:您的设计中有多少表视图需要检查正确的表视图?