我想像uipickerview一样使用uitableview。点击一个按钮,uitableview来了。点击任何一个单元格,所选值将显示在上一页的按钮上
答案 0 :(得分:4)
将数据传回另一个控制器的常规方法是使用delegate
协议。带按钮的控制器将实现在表视图控制器的.h文件中放置的@protocol
声明中声明的协议方法。在tableView:didSelectRowAtIndexPath:
方法中,您将调用委托方法,传递单击单元格的值。
答案 1 :(得分:0)
rdelmar是正确的,最简单的方法可能是使用委托协议并将选定的值传递回上一个视图。
-
但是,假设您想要将此值存储在表视图和选择器之外,您可以创建单例或使用NSUserDefaults以避免必须传递值并可能丢失某些内容。如果这个tableview / picker在设置菜单等中,那就是我要做的。
了解基础知识: http://mobile.tutsplus.com/tutorials/iphone/nsuserdefaults_iphone-sdk/
答案 2 :(得分:0)
一些授权代码; tableview类中的协议:
@protocol SelectionDelegate <NSObject>
-(void)setSelectedTableCellValue:(NSString*)value;@end
让您之前的视图确认并成为您希望显示的tableview的委托,并实现协议方法。现在选择单元格,只需检索单元格的值,然后通过[delegate setSelectedTableCellValue:<some cell value>];
HTH将其传递给您的委托。
答案 3 :(得分:0)
您可能需要查看核心数据,您将能够保存数据并重新访问数据/值并重新加载到您喜欢的任何视图控制器中。它是一个非常通用的工具,一旦你学会了它,你将能够做很多事情。看一下这个Tutorial
答案 4 :(得分:0)
请使用此
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
UITableViewCell *cell=[self.m_TableView cellForRowAtIndexPath:indexPath];
AppDelegate* appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.m_SavedDictionary setObject:cell.textLabel.text forKey:@"driver"];
[self.navigationController popViewControllerAnimated:YES];
}
以及之前使用的ViewwillAppear方法;
if([[appDelegate.m_SavedDictionary objectForKey:@"driver"]length]>=1)
{
[m_driverButton setTitle:[appDelegate.m_SavedDictionary objectForKey:@"driver"] forState:UIControlStateNormal];
}
多数民众赞成。