Как мне сделать перерисовку табличного представления - PullRequest
0 голосов
/ 20 сентября 2009

У меня есть приложение Navigation для iPhone, и его контроллер «второго уровня» в настоящее время является UIViewController, чье перо содержит UIView. Я выделил место в верхней части UIView для панели навигации, а затем добавил внизу панель инструментов, на которой я поместил кнопку обновления, метку и индикатор активности. И последнее, но не менее важное: я ставлю табличное представление посередине.

Я подключил все между контроллером и пером и заставил владельца файла подключиться к UIView и источнику данных и делегировать UITableView, содержащийся в UIView, для ссылки на владельца файла, и все работает нормально.

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

Я подумал, что могу просто вставить это в код, где я хочу обновить таблицу:

[self.tableView reloadData];

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

Я также попытался просто добавить

[self refresh];

вместо [self.tableview reloadData], но код застревает в цикле, обновляя себя.

Как я могу заставить все это работать? Я думаю, что мне нужно оставить свой контроллер второго уровня как UIViewcontroller, но я все еще хочу иметь возможность получить UITableView, который он содержит, для обновления себя, когда я этого хочу.

1 Ответ

1 голос
/ 20 сентября 2009

Почему ваш контроллер второго уровня не может быть UITableViewController? Для начала это подкласс UIViewController, поэтому вы не теряете никакой функциональности.

В любом случае классы UIViewController не-UITableViewController не имеют свойства tableView, которое можно вызвать. Вместо этого вам следует придерживаться представления таблицы в вашем собственном иваре и вызывать его. (Вы даже можете назвать это tableView; вам просто нужно определить это самостоятельно.)

@interface MyViewController : UIViewController {
    UITableView *tableView;
}

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

- (void)myMethod;

@end
@implementation MyViewController

@synthesize tableView;

- (void)myMethod {
    [self.tableView reloadData];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...