2016-04-22 4 views
2

я добавил UITableView в UIViewController как подвид, однако, когда я поставил точку останова в методу UITableView DataSource:объект UITableView нужна инициализация три раза

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 1; 
} 

Я нахожу точки останова в три раза. Почему это?

+0

Он будет выполнять только количество строк. В противном случае вы объявили делегата numberOfSections, в котором вы не указали какой-либо раздел. ? –

+0

Вы использовали reloadData в любом месте? –

+0

@BalajiRamakrishnan Я объявил 1 раздел – windy

ответ

0

Метод, о котором вы упоминаете, является методом источника данных и не имеет ничего общего с инициализацией. Это всего лишь метод, вызываемый табличным представлением, чтобы узнать, сколько строк в таблице. Я не был бы слишком обеспокоен тем, сколько раз табличное представление запрашивает источник данных, сколько строк в таблице.

Я предполагаю, что вы создали свой рабочий стол в виде подземелья другого представления с помощью конструктора интерфейса. Это когда вы инициализируете tableview. Все объекты, созданные с помощью конструктора интерфейса, инициализируются в построителе интерфейса. Затем Xcode архивирует эти объекты во время компиляции (Apple называет это замораживанием сушки), и во время выполнения объекты не имеют аналогов.

Во время разборки объекты, созданные с помощью конструктора интерфейса, затем соединяются с их выходами, выложенными на экране и т. Д. Затем происходит, когда объекты выполняют свои вызовы своим делегатам и источникам данных. Это может случиться не раз.

Надеюсь, это поможет.

+0

спасибо, я хотел бы знать некоторые детали не – windy

+0

Нет проблем, какие детали вы хотите знать? С какими проблемами вы сталкиваетесь, что пытаетесь решить? – MacUserT

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