#ios #objective-c #variables #label #concatenation
#iOS #objective-c #переменные #метка #конкатенация
Вопрос:
Как я могу создать более одной переменной label программно Я пробовал следующий код, но не могу создать, есть ли какой-либо способ объединить имя переменной и целое число?
for(int intNum=0;intNum<3;intNum )
{
UILabel *lblText1;
UILabel *lblmany = [lblText1 stringByAppendingString:intNum];
lblmany = [[UILabel alloc] initWithFrame:CGRectMake(65, 50, 200, 30)];
lblmany.text = strLable1Caption;
lblmany.textAlignment = UITextAlignmentCenter;
[self.view addSubview:lblmany];
[lblText1 release];
[lblmany release];
}
Комментарии:
1. Что вы пытаетесь сделать? Код не имеет особого смысла
2. я пытаюсь создать 3 метки с разными свойствами и должны быть размещены в разных местах
3. Я понимаю это, но что вы ожидаете, что произойдет?
4. мне нужно создать 3 метки с разными свойствами (размер, текст и т.д.) И должны быть размещены в разных местах
Ответ №1:
вы создаете label с одним и тем же фреймом, почему он будет размещен в другом месте?? Определите фрейм динамически, а не со статическими значениями, И если вы хотите применить другие свойства, используйте switch case, если хотите использовать только для цикла, иначе определите отдельно, а не в цикле.
Ответ №2:
Ваш код нелеп (а stringByAppendingString — это метод istance в NSString calss, поэтому вы не можете получить к нему доступ с помощью UILabel). что вы пытаетесь сделать, если хотите создать несколько меток, сделайте что-то вроде этого.
for(int intNum=0;intNum<3;intNum )
{
UILabel *lbl;
lbl = [[UILabel alloc] initWithFrame:CGRectMake(65, 50, 200, 30)];
lbl.text = strLable1Caption;
llbl.textAlignment = UITextAlignmentCenter;
[self.view addSubview:lbl];
[lbl release];
lbl=nil;
}
Комментарии:
1. я пробовал это, но это создаст 3 этикетки с одинаковыми свойствами и одну на другой,, но мне нужно создать 3 этикетки с разными свойствами и должны быть размещены в разных местах
2. вам нужно изменить логику в соответствии с вашими предпочтениями, я показываю способ, который поможет вам создавать метки. Вам нужно добавить несколько множителей с помощью i и задать x и y для местоположений и указать другую строку, какую вы хотите
Ответ №3:
Попробуйте это,
MyController.h
#defune MAX_LABELS 2048
@interface myController : UIViewController
{
UILabel *myLabels[MAX_LABELS];
NSInteger myLabelsCount;
}
- (void) createMyLabels;
- (void) removeMyLabels;
@end
MyController.m
@implementation myController
- (void) createMyLabels
{
[self removeMyLabels];
float x = 10.0;
float y = 5.0;
myLabelsCount = 0;
for (int i = 0; i < [No of labels]; i )
{
myLabels[myLabelsCount] = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 200, 30)];
myLabels[myLabelsCount].text = strLable1Caption;
myLabels[myLabelsCount].textAlignment = UITextAlignmentCenter;
[self.view addSubview:myLabels[myLabelsCount]];
myLabelsCount ;
y = y 15.0;
}
}
- (void) removeMyLabels
{
for (int i = 0; i < myLabelsCount; i )
{
[jmyLabels[i] removeFromSuperview];
}
myLabelsCount = 0;
}
- (void)dealloc {
[super dealloc];
}
@end
Комментарии:
1. я пытался, но на этой строке происходит сбой ——- MyLabels[myLabelsCount] = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 200, 30)];
2. Я отредактировал код. пожалуйста, попробуйте еще раз. Извините за мою глупую ошибку. Теперь попробуйте.
3. на самом деле я исправил ошибки, которые я пытался, но это приводило к сбою, даже сейчас его сбой в той же строке
4. Можете ли вы проверить значение myLabelsCount? Сделайте его равным 0 перед циклом for.
Ответ №4:
Я использовал этот код для создания кнопок в разных местах, вы можете использовать UILabels вместо кнопок.
int x =15;
int y =12;
for (int i =0 ; i <numberamount; i ) {
if (x>273) {
x=15;
y=y 50;
}
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(x, y, 40, 40);
[button setTitle:[nmb objectAtIndex:i] forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonPressed:)
forControlEvents:UIControlEventTouchUpInside];
NSString *tagindex = [[NSString alloc]initWithFormat:@"%@",[nmb objectAtIndex:i]];
int tagindexint = [tagindex intValue];
[button setTag:tagindexint];
[buttons addSubview:button];
[tagindex release];
x = x 75;
}