我的问题是这个
我在UIVIEwController中的UIVIEw上有一个带有动态原型单元的UItableVIEw(它本身嵌入在导航控制器中),我想从一个特定的单元格转到另一个视图
(在任何人建议我应该使用UItableVIEwController之前,我确实在UIVIEw上有其他东西,所以我出于某种原因设置了这种方式.)
现在我不知道如何创建segue
如果我从原型UItableVIEwCell拖动来创建一个segue,所有生成的单元格会自动调用segue – 当我只需要一个这样做时.这是正常的行为,如果我通过从UItableVIEwController拖动创建segue并调用[self performSegueWithIDentifIEr:….来自我的dIDSelectRowAtIndexPathMethod,因此只有我想要执行此segue的特定单元格触发它,我会解决这个问题.
在这种情况下我没有UItableVIEwController – 只是UIVIEw上的UItableVIEw,它是UIVIEwController子类的一部分
我一直在玩,我刚刚发现我无法从UItableVIEw拖动 – 不允许你这样做,所以这是一个deadend.
我似乎唯一的选择就是从UIVIEwController中拖出来
所以我试过了,当然XCode在执行segue线上抛出一个错误,告诉我我…没有’LocationTV’的可见界面声明了选择器performSegueWithIDentifIEr. LocationTv是我的tablevIEw子类.
在这种情况下尝试调用新视图的正确方法是什么
谢谢
西蒙
解决方法 首先,segues只能在UIVIEwControllers之间使用.因此,如果您想在同一视图控制器上的两个视图之间执行segue,那是不可能的.但是如果你想在两个视图控制器之间执行一个segue,那么segue应该由一个视图(在第一个视图控制器内)的动作触发,这是可能的.
所以在你的情况下,如果我理解了这个问题,你想在点击自定义UIVIEw内的UItableVIEw的第一个单元格时执行一个segue.最简单的方法是在您的自定义UIVIEw上创建一个委托,该委托将由您的UIVIEwController实现,当调用委托方法时,该委托包含自定义UIVIEw,您应该执行segue,这是一个简短的示例:
YourCustomVIEw.h
@protocol YourCustomVIEwDelegate <NSObject>-(voID)pleasePerformSegueRightNow;@end@interface YourCustomVIEw : UIVIEw { UItableVIEw *thetableVIEw; //Maybe this is a IBOutlet}@property(weak,nonatomic) ID<YourCustomVIEwDelegate>delegate;
YourCustomvIEw.m
@implementation YourCustomvIEw@ synthesise delegate;//make sure that your table vIEw delegate/data source are set properly//other methods here maybe- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath { if(indexPath.row == 0) { //or any other row if you want if([self.delegate respondsToSelector:@selector(pleasePerformSegueRightNow)]) { [self.delegate pleasePerformSegueRightNow]; } }}
YourtableVIEwController.h
@interface YourtableVIEwController : UIVIEwController <YourCustomVIEwDelegate> { //instance variables,outlets and other stuff here}
YourtableVIEwController.m
@implementation YourtableVIEwController-(voID)vIEwDIDLoad { [super vIEwDIDLoad]; YourCustomVIEw *customVIEw = alloc init.... customVIEw.delegate = self;}-(voID)pleasePerformSegue { [self performSegueWithIDentifIEr:@"YourSegueIDentifIEr"];}
您可以为委托创建任何方法,也可以自定义行为,这只是一个如何做到这一点的简单示例.
总结以上是内存溢出为你收集整理的ios – 是否可以从UIView上的UITableViewCell转到另一个视图全部内容,希望文章能够帮你解决ios – 是否可以从UIView上的UITableViewCell转到另一个视图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)