У меня есть два UITableview. На первом показан 3 раздела с 3 строками, один по умолчанию. Когда пользователь нажимает строку 2 раздела 0, отображается второе представление для выбора значения. После того, как значение выбрано, оно возвращается к первому виду, но на этот раз с другим макетом. В зависимости от выбранного значения в первом представлении может отображаться только один, два или три раздела. Я пытаюсь добиться такого поведения, передавая индексный путь из дочернего представления в его родительский элемент и динамически меняя количество разделов. Я получаю число строк, выбранных в дочернем представлении, но как только оно передается родительскому представлению, номера строк становятся равными нулю.Перемещение строки индексного пути в родительский вид
Код для зрения ребенка является:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSUInteger row = indexPath.row;
//Create parent view instance to pass back indexpath as a integer
DiarioA *plc = [[DiarioA alloc] init];
NSInteger i1 = row;
plc.rowTipo = i1;
[plc release];
[self.navigationController popViewControllerAnimated:YES];
}
Pa
вид RET (DiarioA.h)
@property (nonatomic, assign) int rowTipo;
вид Родитель (Diario.m)
@synthesize rowTipo;
- (void)viewWillAppear:(BOOL)animated{
[self.tableView reloadData];
//Check if rowTipo has value
NSLog(@"RowTipo: %d",rowTipo);
}
//Use rowTipo to dynamically adjust uitableview layout.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
if (self.rowTipo==0) {
return 3;
}
return self.rowTipo;
}
Не могли бы вы мне помочь чтобы указать, почему я теряю индексный путь, исходящий из childview в parentview. Ваша помощь очень ценится.
Inder, спасибо. Теперь он отлично работает. Вы предпочитаете это вместо делегатов? или оба они равны по эффективности. Кстати, я прошу проголосовать, потому что мои баллы, однако, ваш ответ мне очень помог. – Memo
Плохо, если вы еще не голосовали :( Anyways .. это то же самое, что и delgates .. здесь мы просто передали объект и называемый метод setter, такой же, как delgates ... просто измените вашу переменную .h в 'id delegate;' и вызовите setter на ней '[delegate setRowTipo: row];' тогда это будет похоже на делегирование, хотя оба они одинаковы .. теперь ясно, что вы можете принять его и перенести его;) –
Большое спасибо за ваше время. Мне нужно, по крайней мере, 15 баллов для голосования, однако, ваш ответ полностью принят, и это я искал. Голосование +2 – Memo