UIViewTableCell didSelectRowAtIndexPath вызывает, но не нажимает контроллер представления - PullRequest
0 голосов
/ 09 июня 2010

, поэтому у меня есть представление UIViewController с UITableView.Поэтому имя класса UIViewController - это SelectionScreen.Имя класса UITableView - SelectionScreenTable.

Изображение: http://img717.imageshack.us/i/screenshot20100609atpm0.png/

Я объявил UITableView * selectionTable в классе SelectionScreen и подключил его к xib-файлу SelectionScreen

Проблема в том, что, когда я щелкаю строку в таблице, она остается выделенной синим цветом, она вызывает didSelectRowAtIndexPath (проверено с NSLog), но не выдвигает новое представление, которое называется (GraphView).

Это код, который я использую для вызова нового контроллера, который работает с обычной кнопкой

GraphView *aSelectionScreenViewController = [[GraphView alloc]
         initWithNibName:@"GraphView"
         bundle:nil];

[self presentModalViewController: aSelectionScreenViewController animated: YES];[aSelectionScreenViewController release];

Я искал вокруг и обнаружил, что мне нужно установить делегата для таблицы в самом классе UITableView на viewload

tableview.delegate = self;

или

self.tableview.delegate = self;

Но это не сработало.контроллер все еще не выдвигался, и да, я проверил, что контроллер не равен nil, поскольку я попробовал это с помощью простой кнопки.

Поэтому я подумал, должен ли я вместо этого установить делегат UITableView в UIViewController, поэтому я попробовал этот код

selectionTable.delegate = selectionTable.self;

, но, очевидно, он не работал = \, он испортил весь UITableView и заставил все ячейки быть его предопределенными настройками.

Так же, как и любойесть идеи, как заставить его работать.

Ответы [ 3 ]

0 голосов
/ 10 июня 2010

Привет, ребята, я решил это, на скриншоте

http://img717.imageshack.us/i/screenshot20100609atpm0.png/

Контроллер SelectionScreenTable в XIB SelectionScreen, точка просмотра не была подключена к XIB в SelectionScreen XIBтак что я думаю, что он не был правильно настроен.

0 голосов
/ 11 июня 2010

я решил вместо использования presentModalViewController.

Вместо этого я использовал анимацию, чтобы добавить вид Больше информации в ссылке ниже http://www.iphonedevsdk.com/forum/iphone-sdk-development/13427-uiview-slide-transition.html

0 голосов
/ 09 июня 2010

Здесь довольно сложно получить полную картину, но я могу попробовать некоторые подсказки.

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

Я думаю, что проблема может заключаться в том, что метод presentModalViewController: должен быть вызван на активном контроллере представления для работы.

Из того, что я могу сказать, у вас есть три контроллера представления, SelectionScreenTableController, GraphViewController, а также должен быть какой-то основной контроллер, возможно, SelectionScreenController.

SelectionScreenController является активным контроллером представления, поэтому он должен быть тем, который отправил сообщение presentModalViewController: *. 1009 *

Есть несколько способов решить эту проблему. Быстрое решение состоит в том, чтобы создать выход в SelectionScreenTableController с именем selectionScreenController и связать его с владельцем файла в nib-файле (при условии, что ваш класс SelectionScreen на самом деле является контроллером представления), а затем вызвать:

[selectionScreenController
    presentModalViewController:aSelectionScreenViewController
    animated: YES];

вместо этого в вашем текущем списке didSelectRowAtIndexPath:

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