Я создаю игру поиска слов, используя кнопки для хранения букв, и мне нужно создать таблицу с определенным количеством столбцов и строк. Поэтому, если таблица должна быть 15 x 20, у меня есть ivar для tableWidth и tableHeight, и мне нужно сделать 300 кнопок и поместить их в представление. Я не могу использовать построитель интерфейса, поэтому я не уверен, как я буду создавать кнопки и помещать их в представление. У кого-нибудь есть указатели на меня? Дайте мне знать, если мне нужно объяснить это лучше.Создание таблицы кнопок с шириной и высотой
ответ
EDIT: Я только что видел ваш комментарий на другой ответ, который вы не хотите использовать UITableView
. Я оставляю свой оригинальный ответ ниже, так как это хороший способ сделать это (особенно, если не все кнопки будут в настоящее время видны), но вы также можете сделать что-то же просто, как:
for (int i = 0; i < NUMBER_OF_ROWS; ++i) {
for (int j = 0; j < NUMBER_OF_COLUMNS; ++j) {
UIButton *newButton = [[UIButton alloc] init];
newButton.frame = ... // Calculate frame based on i and j
// Customize other behavior of the button (appearance, targets, etc) based on i and j
[superviewToAddButtonTo addSubview:newButton];
// If not using ARC: [newButton release];
}
}
UITableView
может ввести в заблуждение при первом использовании.
Первая вещь, чтобы сделать пользовательский подкласс UITableViewController
, который декларирует несколько хороших вещей для вас, и автоматически устанавливает свой класс до как соответствующие два соответствующих протоколов (UITableViewDelegate
и UITableViewDataSource
). Затем вам необходимо переопределить методы, которые предоставляют информацию о вашей таблице.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
cellIdentifier = @"Cell";
cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:cellIdentifier]; // if you're not using ARC, make sure to autorelease...
for (int i = 0; i < NUMBER_OF_COLUMNS; ++i) {
UIButton *newButton = [[UIButton alloc] init];
// Set the frame and customize the button in other ways, and then...
[cell addSubview:newButton];
// If you're not using ARC, make sure to release...
}
}
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return NUMBER_OF_ROWS;
}
Существует множество других вещей, которые вы можете сделать, чтобы настроить таблицу, но это должно дать вам базовую функциональность, в которой вы нуждаетесь. Поэтому для того, чтобы на самом деле добавить один из них приложение вы могли бы сделать:
MyTableViewControllerSubclass *tableViewController = [[MyTableViewControllerSubclass alloc] init];
[superViewToAddTableTo addSubview:tableViewController.tableView];
// If you're not using ARC, make sure to release the tableViewController in your dealloc method
Таблицы iOS имеют только один столбец, поэтому каждая строка представляет собой одну ячейку. Вы можете заполнить каждую ячейку несколькими кнопками и сделать ее похожим на несколько столбцов. Также найдите UICollectionView.
Вам нужно создать UIButtons программно как в:
Мне не нужен tableView, я просто ссылался на группу кнопок в виде таблицы. –
UIButton - это вид (UIView). Создайте его программно, дайте ему фрейм (который вам нужно будет рассчитать для каждой кнопки) и добавьте его как подзону в общий вид сетки.
Если вы не знаете, что такое UIView есть, как сделать один UIView подтаблица другого, как работает зрение позиционирование и т.д. (например, какой кадр), прочитали мою книгу:
Получить экран
width
.Получить экран
height
.Найти
w
иh
для каждой кнопкиwidth/15
иheight/20
соответственно.петля г = 0 до 14: +1 шага Гото шага 5.
Loop с = от 0 до 19 шага +1 Гото шага 6.
Сделать кадр с й = 0 * шириной, y = 0 * высота, ширина, высота
Сделайте кнопку с вышеуказанным фреймом, настройкой заголовка, целью/действием, если требуется.
Следующая с Loop
Следующая г петля
Если вы не хотите использовать UITableView я рекомендую положить вместе пользовательский вид контейнера с кнопками внутри него.
Прокрутите строки и столбцы и добавьте UIButtons к вашему основному виду в виде подзонов. Вам придется обрабатывать размещение UIButton через их фреймы и настраивать их высоту/ширину, чтобы вписаться в сетку. Вот некоторые хитроумный код псевдо:
#import "ViewController.h"
@interface ViewController()
@property (nonatomic) NSMutableArray *buttons;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// 320 x 460 for regular iPhone screen size
// 320/8 = 40 px width
// 460/10 = 46 px tall
// 8 * 10 = 80 buttons
double width = 40.0;
double height = 46.0;
double xOffset = 0.0;
double yOffset = 0.0;
int rowCount = 0;
int columnCount = 0;
for(int i = 0; i < 80; i++) {
xOffset = columnCount * width;
yOffset = rowCount * height;
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(xOffset, yOffset, width, height);
button.tintColor = [UIColor redColor];
[self.view addSubview:button];
columnCount++;
if (columnCount == 8)
columnCount = 0;
if (i == 9 ||
i == 19 ||
i == 29 ||
i == 39 ||
i == 49 ||
i == 59 ||
i == 69 ||
i == 79)
rowCount++;
}
}
@end
Это может быть значительно улучшена, я уверен, но это будет рисовать сетку кнопок в размерах, указанных.
- 1. Создание JOptionPane и их объект с фиксированной шириной и высотой
- 2. UILabel с фиксированной шириной и гибкой высотой
- 3. Создание всплывающего окна с шириной и высотой авто
- 4. создание набора «ячеек» с фиксированной шириной и выровненной высотой
- 5. Создание BufferedImage с шириной, высотой и глубиной бит
- 6. Создание двумерного массива с заданной шириной и высотой в Javascript
- 7. Создание алгоритма сетки с фиксированной шириной и высотой
- 8. Haskell - Создание прямоугольника 1s с высотой и шириной пользовательского ввода
- 9. создание div с фиксированной шириной и гибкой высотой
- 10. шкала таблица шириной и высотой
- 11. Проблемы с шириной и высотой тела HTML
- 12. Открыть окно с указанной шириной и высотой
- 13. DrawState с определенной шириной и высотой
- 14. Динамически создавать divs с высотой и шириной
- 15. Set MinimumBlobArea с шириной и высотой - MATLAB
- 16. Правильный многоугольник с различной высотой и шириной
- 17. Ползунок с чувствительной шириной и фиксированной высотой
- 18. Изображение с фиксированной высотой и шириной 100%
- 19. Устранение проблемы с высотой и шириной
- 20. Столбцы с шириной и высотой жидкости
- 21. Ответственный div с шириной и высотой
- 22. Относительная компоновка с высотой и шириной процента
- 23. Виды с одинаковой шириной и высотой
- 24. ЦЕНТРАЛЬНЫЙ HTML-контент с шириной и высотой?
- 25. Silverlight сетка с автоматической шириной и высотой
- 26. Ползунок с динамической шириной и высотой
- 27. Круг с высотой 100% и соответствующей шириной
- 28. SVG-текст с определенной шириной и высотой
- 29. Сетка с разной высотой и шириной изделия
- 30. Ответственный iframe с максимальной шириной и высотой
Когда вы говорите «стол», вы просто имеете в виду большую сетку, верно? Вы не говорите о UITableView, верно? – matt
Исправить. Это будет только сетка с заданной шириной и высотой. –