从 UITableView 传递 indexPath
Passing indexPath from UITableView
在我的应用程序中,我有一个UITableViewController
(Uctovatrida0TableViewController)和另外两个UIViewContoller
(DetailViewController 和示例)。
现在我遇到了一个问题,因为我不知道如何在我的第一个UIViewController
中识别索引(从indexPath.row
)然后正确地引用另一个UIViewController
.
我的Uctovatrida0TableViewController.m中的代码(运行良好):
-(void) showDetailsForIndexPath:(NSIndexPath*)indexPath
{
[self.searchBar resignFirstResponder];
DetailViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailsViewController"];
Ucty* ucet;
if(isFiltered)
{
ucet = [_filteredTableData objectAtIndex:indexPath.row];
}
else
{
ucet = [self.alldataArray objectAtIndex:indexPath.row];
}
vc.uctyItem = ucet;
[self.navigationController pushViewController:vc animated:true];
}
我的 class DetailViewConroller 中的代码,我需要来自 Uctovatrida0TableViewController.m
的 indexPath
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"Priklad"])
{
Priklad *vc = [segue destinationViewController];
Ucty* ucet;
//of course this does not work
ucet = [self.alldataArray objectAtIndex:NSIndexPath.row];
vc.uctyItem = ucet;
[self.navigationController pushViewController:vc animated:true];
}
}
我的代码 class Priklad.m:
- (void)setDetailItem:(id)newDetailItem
{
if (self.uctyItem != newDetailItem)
{
self.uctyItem = newDetailItem;
[self configureView];
}
}
- (void)configureView
{
if (self.uctyItem ) {
self.prikladLabel.text = self.uctyItem.priklad;
self.uctykprikladu.text = self.uctyItem.uctykprikladu;
}
}
添加一个属性到DetailViewConroller
,你可以在推送到它之前设置它。
@property (assign, nonatomic) int index;
根据您的代码,DetailViewConroller
似乎有一个 属性 uctyItem
。所以在你的 DetaiViewController
的 prepareForSegue:sender:
方法中,你可以调用 vc.uctyItem = self.uctyItem;
.
如果你想获得选定的单元格 indexPath
那么有一个方法是:selectedIndexPath = [tableView indexPathForSelectedRow];
在我的应用程序中,我有一个UITableViewController
(Uctovatrida0TableViewController)和另外两个UIViewContoller
(DetailViewController 和示例)。
现在我遇到了一个问题,因为我不知道如何在我的第一个UIViewController
中识别索引(从indexPath.row
)然后正确地引用另一个UIViewController
.
我的Uctovatrida0TableViewController.m中的代码(运行良好):
-(void) showDetailsForIndexPath:(NSIndexPath*)indexPath
{
[self.searchBar resignFirstResponder];
DetailViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailsViewController"];
Ucty* ucet;
if(isFiltered)
{
ucet = [_filteredTableData objectAtIndex:indexPath.row];
}
else
{
ucet = [self.alldataArray objectAtIndex:indexPath.row];
}
vc.uctyItem = ucet;
[self.navigationController pushViewController:vc animated:true];
}
我的 class DetailViewConroller 中的代码,我需要来自 Uctovatrida0TableViewController.m
的 indexPath- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"Priklad"])
{
Priklad *vc = [segue destinationViewController];
Ucty* ucet;
//of course this does not work
ucet = [self.alldataArray objectAtIndex:NSIndexPath.row];
vc.uctyItem = ucet;
[self.navigationController pushViewController:vc animated:true];
}
}
我的代码 class Priklad.m:
- (void)setDetailItem:(id)newDetailItem
{
if (self.uctyItem != newDetailItem)
{
self.uctyItem = newDetailItem;
[self configureView];
}
}
- (void)configureView
{
if (self.uctyItem ) {
self.prikladLabel.text = self.uctyItem.priklad;
self.uctykprikladu.text = self.uctyItem.uctykprikladu;
}
}
添加一个属性到DetailViewConroller
,你可以在推送到它之前设置它。
@property (assign, nonatomic) int index;
根据您的代码,DetailViewConroller
似乎有一个 属性 uctyItem
。所以在你的 DetaiViewController
的 prepareForSegue:sender:
方法中,你可以调用 vc.uctyItem = self.uctyItem;
.
如果你想获得选定的单元格 indexPath
那么有一个方法是:selectedIndexPath = [tableView indexPathForSelectedRow];