如何为UIButton设置标题?
问题描述:
我们如何设置一个按钮的按钮标题,我知道这个答案很简单,我们需要为标题设置按钮的标题,但我的需求有点不同,我有一个根据登录动态更改的用户名。我设置在点击一个按钮,并在标签显示其内为这个那个按钮。我的代码是如何为UIButton设置标题?
- (void)getFacebookProfileFinished:(ASIHTTPRequest *)request
{
// Use when fetching text data
NSString *responseString = [request responseString];
NSLog(@"Got Facebook Profile: %@", responseString);
NSString *likesString;
NSMutableDictionary *responseJSON = [responseString JSONValue];
NSString *username;
NSString *firstName = [responseJSON objectForKey:@"first_name"];
NSString *lastName = [responseJSON objectForKey:@"last_name"];
if (firstName && lastName) {
username = [NSString stringWithFormat:@"%@ %@", firstName, lastName];
} else {
username = @"mysterious user";
}
[_loginButton setTitle:username forState:UIControlStateNormal];
_lblfaceusername.text = username;
[self refresh];
}
我需要另一个按钮,点击可显示用户名和具有assing该按钮的标题用户名的代码,这是
- (void)refresh {
if (_loginState == LoginStateStartup || _loginState == LoginStateLoggedOut) {
_loginStatusLabel.text = @"Not connected to Facebook";
[_loginButton setTitle:@"Login" forState:UIControlStateNormal];
_loginButton.hidden = NO;
} else if (_loginState == LoginStateLoggingIn) {
_loginStatusLabel.text = @"Connecting to Facebook...";
_loginButton.hidden = YES;
} else if (_loginState == LoginStateLoggedIn) {
_loginStatusLabel.text = @"Connected to Facebook";
[_loginButton setTitle:@"" forState:UIControlStateNormal];
_loginButton.hidden = NO;
}
}
我需要设置我想在[_loginButton setTitle:@"" forState:UIControlStateNormal];
用户名;
答
总之你在方法
- (void)getFacebookProfileFinished:(ASIHTTPRequest *)request
做Facebook的请求后,设置按钮标题。那么,为什么你需要在refresh
方法中再次设置?只需在条件中注释掉refresh
的方法。
//[_loginButton setTitle:@"" forState:UIControlStateNormal];
编辑
- (void)refresh {
if (_loginState == LoginStateStartup || _loginState == LoginStateLoggedOut) {
_loginStatusLabel.text = @"Not connected to Facebook";
[_loginButton setTitle:@"Login" forState:UIControlStateNormal];
_loginButton.hidden = NO;
} else if (_loginState == LoginStateLoggingIn) {
_loginStatusLabel.text = @"Connecting to Facebook...";
_loginButton.hidden = YES;
} else if (_loginState == LoginStateLoggedIn) {
_loginStatusLabel.text = @"Connected to Facebook";
NSString *username = [_loginButton titleForState:UIControlStateNormal];
[_loginButton setTitle:username forState:UIControlStateNormal];
_loginButton.hidden = NO;
}
}
答
你需要的是存储在该代码段都可以访问的位置的参考,该消息是什么。这样做的典型方法是在接口定义中添加NSString * _username,并在接收时将其设置为用户名。这样,您可以随时从任何取决于当前值的位置访问它。
内存管理包括在内,这将产生:
[_username release]; // Release possible previous login
_username = [username retain]; // Ownership needed
在刷新:
[_loginButton setTitle:_username forState:UIControlStateNormal];
在dealloc的:
[_username release]; // Release ownership when not needed anymore
这使您可以在任何需要的位置访问您的变量。
好友...你如何创建按钮。粘贴代码.. –
你的方法不行吗?怎么了?您是否尝试为托管视图调用'setNeedsDisplay'? – dasdom
[NSString stringWithString:username];用户名应该是NSString类的对象。 – iamsult