Создание экземпляра UITableViewController через Интерфейсный Разработчик - PullRequest
0 голосов
/ 20 января 2011

Я начинаю с разработок для iOS здесь и интегрирую Interface Builder в свои проекты.

У меня возник бы вопрос, который я сейчас испытываю, но я не уверен, что на первом месте, если я

Первый случай

Я создал все свои UITableViewController внутри IB, а затем изменил класс на свой пользовательский CurrencyTableViewController.поэтому для добавления этого внутри моего window.rootViewController в MainWindow_iPhone.xib я просто создаю переменную прямо из AppDelegate и вызываю экземпляр, созданный в другом файле .xib.Это работает довольно хорошо, но одна из моих проблем здесь связана с управлением памятью.

//Use the instance initiated by IB
CurrencyTableViewController *currencyTableViewController    = [[[NSBundle mainBundle] loadNibNamed:@"CurrencyTableView" owner:nil options:nil] objectAtIndex:0];

Таким образом, вопрос заключается в следующем: при использовании описанного выше метода для загрузки экземпляров, созданных в IB, они автоматически освобождаются после этого?Или мне нужно объявить это где-нибудь еще?

Второй случай

Этот второй случай был альтернативой, пытавшейся подумать о том, как освободить объект, следовательно, создание экземпляра вместо использованияодин экземпляр уже создан.Но, к сожалению, кажется, выдает ошибку, которая говорит, что я не присоединяю представление к контроллеру.И это заставило меня думать, что UITableViewController, даже будучи подклассом UIViewController, не поддерживает метод initWithNibName ... по крайней мере, это не заявлено в документации.

//Fails with: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "CurrencyTableView" nib but the view outlet was not set.'*** Call stack at first throw:
CurrencyTableViewController *currencyTableViewController    = [[CurrencyTableViewController alloc] initWithNibName:@"CurrencyTableView" bundle:nil];

Итак, можно ли подтвердить, действительно ли это не поддерживается, и единственный возможный способ создать объект и присоединить его к файлу nib, если этот элемент UIViewController?если нет, то как может работать приведенный ниже код?

Заранее благодарим за поддержку и время.

1 Ответ

0 голосов
/ 25 января 2011

Относительно моего первого случая :

Кажется, что когда вы создаете что-то из IB, оно автоматически высвобождается, хотя и не уверен.

Относительно второго случая

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

Если у кого-то есть другие альтернативы, пожалуйста, дайте мне знать.

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