Каков наилучший способ создания сгруппированных контроллеров табличного представления на iphone? - PullRequest
1 голос
/ 15 июня 2009

UITableViewController имеет метод initWithStyle, в котором вы передаете ему стиль, который вы хотите использовать в табличном представлении, обычный или сгруппированный. Это означает, что для создания и использования моего контроллера табличного представления в другом месте кода, возможно в нескольких местах, я делаю это:

MyViewController *myViewController = [[MyViewController alloc] initWithStyle: UITableViewStyleGrouped];
[self.navigationController pushViewController: myViewController animated: YES];
[myViewController release];

Это кажется мне задом наперед. Классы, которые используют мой UITableViewController, не должны знать или заботиться о том, использует ли он сгруппированный или простой стиль, о чем заботится MyViewController. Какой идиоматический способ борьбы с этим? Переопределить метод init в MyViewController для вызова initWithStyle?

Ответы [ 3 ]

0 голосов
/ 15 июня 2009

Мой ответ как новичку: «Просто сделай это», и позже я буду волноваться о проблемах философского дизайна. Все примеры, которые я видел, включая популярные книги, имеют такой «шаблон», поэтому он не может быть слишком неправильным.

0 голосов
/ 04 марта 2011

Я бы просто создал контроллер табличного представления через xcode, назначил бы таблицу сгруппированный стиль в Интерфейсном Разработчике, а затем переопределил бы метод init при необходимости:

- (id)init {
    self = [super initWithNibName:@"MyViewControllerNibFileName" bundle:nil];
    if (self) {
        // Do other customisation
    }
    return self;
}

Мне по какой-то причине нужно было явно установить имя пера, но иногда контроллер вида просто находит его автоматически (я все еще новичок, поэтому не уверен, почему это происходит)

0 голосов
/ 15 июня 2009

Просто будьте осторожны при переопределении одного метода init в суперклассе, который вызывает другой. Я не уверен в этом здесь, но если initWithStyle уже вызывает init в суперклассе, когда вы переопределяете init в подклассе и вызываете super, у вас может быть цикл на руках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...