Ios 如何从属于子类的uitableview推送uiviewcontroller
我有一个Ios 如何从属于子类的uitableview推送uiviewcontroller,ios,uitableview,uinavigationcontroller,Ios,Uitableview,Uinavigationcontroller,我有一个UIViewController,其中添加了UITableView的子类作为子视图 e、 g 在ViewControllerviewDidLoad中,我创建了一个ItemList(ItemList)对象,并将其添加到ViewController的视图中 - (void)viewDidLoad { ... [self.view addSubview:itemList]; } 在ItemList的didselectrowatinexpath中,这是一个UITableView我无权访问
UIViewController
,其中添加了UITableView
的子类作为子视图
e、 g
在ViewController
viewDidLoad
中,我创建了一个ItemList
(ItemList
)对象,并将其添加到ViewController
的视图中
- (void)viewDidLoad {
...
[self.view addSubview:itemList];
}
在ItemList
的didselectrowatinexpath
中,这是一个UITableView
我无权访问导航控制器,因此如何将另一个viewcontroller
推到导航控制器上
@implementation ItemList
{
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self.navigationController pushViewController:newViewControllerobject animated:YES];
}
}
在itemList类中创建属性,例如:ViewController*mydelegate
。
在ViewController的viewDidLoad
中添加项目列表时,请添加以下内容
itemList.myDelegate = self;
前进..我选择了
@implementation ItemList
@synthesize mydelegate;
{
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[myDelegate.navigationController pushViewController:newViewControllerobject animated:YES];
}
}
如果您在AppDelegate中定义了第一个navigationController,则可以使用以下代码查找最上面的navigationController,然后将viewController推到其上
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];
[appDelegate.navigationController.visibleViewController.navigationController pushViewController:newViewControllerobject animated:YES];
[[self superview]导航控制器]。试试这个@hpiOSCoder:通过尝试上述操作,可以访问视图(superView),而不是viewController@AppleDelegate哎呀。。。这是正确的!是的,我就是这么想的。我将以您的方式实现它,直到有人提出不同的建议。上面使用的委托设计模式是在两个类之间设计代码以在必要时使用协议(在本例中为UITableView方法)的最佳方式
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];
[appDelegate.navigationController.visibleViewController.navigationController pushViewController:newViewControllerobject animated:YES];