2013-04-03 3 views
0

Я создаю игру поиска слов, используя кнопки для хранения букв, и мне нужно создать таблицу с определенным количеством столбцов и строк. Поэтому, если таблица должна быть 15 x 20, у меня есть ivar для tableWidth и tableHeight, и мне нужно сделать 300 кнопок и поместить их в представление. Я не могу использовать построитель интерфейса, поэтому я не уверен, как я буду создавать кнопки и помещать их в представление. У кого-нибудь есть указатели на меня? Дайте мне знать, если мне нужно объяснить это лучше.Создание таблицы кнопок с шириной и высотой

+0

Когда вы говорите «стол», вы просто имеете в виду большую сетку, верно? Вы не говорите о UITableView, верно? – matt

+0

Исправить. Это будет только сетка с заданной шириной и высотой. –

ответ

1

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 
0

Таблицы iOS имеют только один столбец, поэтому каждая строка представляет собой одну ячейку. Вы можете заполнить каждую ячейку несколькими кнопками и сделать ее похожим на несколько столбцов. Также найдите UICollectionView.

Вам нужно создать UIButtons программно как в:

How do I create a basic UIButton programmatically?.

+0

Мне не нужен tableView, я просто ссылался на группу кнопок в виде таблицы. –

0

UIButton - это вид (UIView). Создайте его программно, дайте ему фрейм (который вам нужно будет рассчитать для каждой кнопки) и добавьте его как подзону в общий вид сетки.

Если вы не знаете, что такое UIView есть, как сделать один UIView подтаблица другого, как работает зрение позиционирование и т.д. (например, какой кадр), прочитали мою книгу:

http://www.apeth.com/iOSBook/ch14.html

0
  1. Получить экран width.

  2. Получить экран height.

  3. Найти w и h для каждой кнопки width/15 и height/20 соответственно.

  4. петля г = 0 до 14: +1 шага Гото шага 5.

  5. Loop с = от 0 до 19 шага +1 Гото шага 6.

  6. Сделать кадр с й = 0 * шириной, y = 0 * высота, ширина, высота

  7. Сделайте кнопку с вышеуказанным фреймом, настройкой заголовка, целью/действием, если требуется.

  8. Следующая с Loop

  9. Следующая г петля

0

Если вы не хотите использовать 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 

Это может быть значительно улучшена, я уверен, но это будет рисовать сетку кнопок в размерах, указанных.

Смежные вопросы