В IB я создал таблицу и теперь хочу присвоить ей переменную

#iphone

#iPhone

Вопрос:

Теперь я хочу обратиться к таблице, но в моем файле .h нет переменной, поскольку она не требовалась при первоначальном создании. Таблица отлично работает, ее можно добавлять / отображать / etc.

Я попытался добавить «myTable» в файл .h, а затем связать в IB (таблица была связана с «view», и я мог / выбрал «myTable»), но моя первая попытка не сработала, и я боялся испортить мое (несколько) рабочее приложение 😉

Надеюсь, вопрос имеет смысл!!!

спасибо!

Ответ №1:

Просто используйте

 IBOutlet UITableView *    myTableView;
  

в вашем файле .h, то есть файле объявления.Теперь вы можете получить доступ к MyTableView в IB.Теперь вы можете создать объект для этого TableView.

Ответ №2:

Если я вас правильно понял, вы хотите связать таблицу со своим кодом. Если это так, то в вашем заголовочном файле вам нужно добавить свойство, подобное so

@property(неатомный, сохранить) IBOutlet UITableView *myTable;

А затем синтезировать ее в вашем файле .m следующим образом

 @synthesize myTable;
  

Как только вы это сделаете, вы сможете связать ее в Interface Builder. Но имейте в виду, что если вы хотите дополнительно заполнять таблицу / взаимодействовать с ней, вам нужно указать источник данных / делегировать вашу таблицу владельцу вашего файла. Вот руководство о том, как это сделать — http://www.switchonthecode.com/tutorials/how-to-create-and-populate-a-uitableview

Отвечает ли это на ваш вопрос?

Комментарии:

1. Спасибо! Я знал, что не слишком хорошо это объясняю… После прочтения всех предложений я добавил имя переменной, а затем связал «Outlet» в IB с новой переменной «MyTableView». Раньше, когда я пытался использовать IB, я удалял «view» «Outlet» в IB, поскольку я не понимал, почему я хотел бы, чтобы оба («view» и «MyTableView») указывали на «Table View» (все еще нет), но, похоже, это работает. В моем представлении .xib просто есть «Table View» / «UITableView». Я не могу точно вспомнить, как я ее изначально создавал, но это был самый простой вариант, поскольку я всего лишь новичок во всем этом…

Ответ №3:

Если ваш контроллер является a UITableViewController , просто используйте его tableView свойство.

Ответ №4:

Вопрос не совсем имеет смысл, потому что неясно, что означает «таблица отлично работает …», если у вас нет никаких ссылок на нее в вашем файле .h. Я предположу, что у вас действительно есть iVar класса UITableView, который определен как IBAction, и вы внедрили протоколы источника данных табличного представления и делегирования в свою реализацию контроллера представления. Если у вас ее нет, то таблица не сможет отображать какие-либо данные.

Во-первых, если у вас определен iVar, вы можете просто обратиться к iVar напрямую. Если вы предпочитаете свойство, вы можете его создать.

Если ваш контроллер просмотра является UITableViewController, вам не нужно ничего делать, свойство tableView уже определено для вас, и вы можете ссылаться на таблицу с помощью tableView свойства.

Если вашим контроллером представления является что-то другое, вы можете создать свойство следующим образом в своем файле .h:

 @property (nonatomic, retain)   UITableView *    myTableView;
  

и в вашем .m

 @synthesize myTableView;
  

Затем вы можете ссылаться на свой TableView с помощью:

 self.myTableView;
  

Замените myTableView на имя вашего TableView iVar . Если вам нужно подключить ваш TableView в IB к свойству MyTableView, то вместо этого определите свойство как:

 @property (nonatomic, retain)   IBOutlet UITableView *    myTableView;
  

Как только вы это сделаете, отредактируйте свой пользовательский интерфейс в IB и подключите выход TableView к myTableView свойству. Вам также нужно будет назначить источник данных TableView и правильно делегировать. Это немного выходит за рамки вашего вопроса. В руководстве Apple по программированию контроллера табличного представления есть отличные документы по этому вопросу.

Комментарии:

1. Спасибо! Я знал, что не слишком хорошо это объясняю… После прочтения всех предложений я добавил имя переменной, а затем связал «Outlet» в IB с новой переменной «MyTableView». Раньше, когда я пытался использовать IB, я удалял «view» «Outlet» в IB, поскольку я не понимал, почему я хотел бы, чтобы оба («view» и «MyTableView») указывали на «Table View» (все еще нет), но, похоже, это работает. В моем представлении .xib просто есть «Table View» / «UITableView». Я не могу точно вспомнить, как я ее изначально создавал, но это был самый простой вариант, поскольку я всего лишь новичок во всем этом…