gpt4 book ai didi

ios - 如何根据头像选择使用适当的用户名填充文本字段

转载 作者:行者123 更新时间:2023-11-29 10:23:14 26 4
gpt4 key购买 nike

我构建了以下方法 fetchLastFiveLogins,该方法成功地将用户头像添加到 _avatarButton。但是,当用户点击头像时,它会调用 fillUserName 方法。那部分工作正常,但我不知道如何用与头像关联的用户名填充 _textfieldUsername。下面是 fetchLastFiveLogins 方法的片段。

// sort / filter "results" to display the last five "lastLogin(s)"
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastLogin" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];

[request setFetchLimit:5];

[request setSortDescriptors:sortDescriptors];

// fetch records and handle error
NSError *error;
NSArray *results = [_managedObjectContext executeFetchRequest:request error:&error];

if (!results) {
// handle error
// also if there is login data handle error so app doesn't crash
}
Account *anAccount;

// create a stock image
UIImage *btnImage = [UIImage imageNamed:@"HomeBrewPoster1.jpg"];

NSMutableArray *avatars = [NSMutableArray arrayWithCapacity:5];
for ( anAccount in results) {
NSLog(@"results%@",anAccount.lastLogin);
if(anAccount.lastLogin) {
NSLog(@"anAccount.lastLogin = %@, by:%@",anAccount.lastLogin,anAccount.username);
if (anAccount.avatar != nil) {
UIImage *avatarImg = [UIImage imageWithData:anAccount.avatar ];
[avatars addObject:avatarImg];
}
else {
[avatars addObject:btnImage];
}
}
}
NSLog(@"avatars array%lu",(unsigned long)avatars.count);
for ( NSInteger i = 0; i < 4; i++) {
// Check that we have enough logins
if (i < results.count) {
NSLog(@"avatars =%@",avatars[i]);

CGFloat staticX = 0;
CGFloat staticWidth = 80;
CGFloat staticHeight = 80;
CGFloat staticPadding = 5;

_avatarButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

// the last two values control the size of the button
_avatarButton.frame = CGRectMake(0, 0, 80, 80);
[_avatarButton setFrame:CGRectMake((staticX + (i * (staticHeight + staticPadding))),5,staticWidth,staticHeight)];

// make corners round
_avatarButton.layer.cornerRadius = 40; // value varies -- // 35 yields a pretty good circle.
_avatarButton.clipsToBounds = YES;

// assign method / action to button
[_avatarButton addTarget:self action:@selector(fillUserName) forControlEvents:UIControlEventTouchDown];

[_avatarButton setBackgroundImage:[avatars objectAtIndex:i] forState:UIControlStateNormal];

NSLog(@"avatarImage = %@",[_avatarButton backgroundImageForState:UIControlStateNormal]);
[_avatarScroll addSubview:_avatarButton];
}
}
}

最佳答案

第 1 步: 使 fillUserName 方法采用参数 fillUserName:(id) sender,以便该方法将传递给按钮那是被按下的。您需要调整 addTarget,使其使用 @selector(fillUserName:)(末尾有冒号)。

第 2 步:您需要能够区分按下了哪个按钮。人们经常使用 UIButton(和其他控件)的 tag 属性来区分按钮。如果将标记设置为结果的数组索引,则标记为 0 的按钮是结果数组中的第 0 个条目。看到这个问题:How do i set and get UIButtons' tag?对于一些代码示例。

第 3 步:确保您持有对结果数组的引用,以便您可以从 fillUserName: 方法访问它。

更新:正如我在下面的评论中提到的,使用 block 的解决方案似乎是一个更好的解决方案,有些人已经写了一些 nice code启用它。

关于ios - 如何根据头像选择使用适当的用户名填充文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33764843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com