Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在TableView中获取UIViewController';s客户单元_Ios_Objective C_Uitableview - Fatal编程技术网

Ios 在TableView中获取UIViewController';s客户单元

Ios 在TableView中获取UIViewController';s客户单元,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我有一个名为“MainView”的UIViewController,还有一个名为“tblLists”的UITableView tblLists生成customCell-“customCellList” 我的问题是能否在customCellList类中获取MainView的实例(self)。 我尝试了superview,但没有得到MainView。我想在没有协议的情况下实现这一点 所以在这方面需要你的帮助。你所要求的不是一个好主意,你应该找到另一种解决办法。它打破了MCV模式。 顺便说一句,如果您

我有一个名为“MainView”的
UIViewController
,还有一个名为“tblLists”的
UITableView
tblLists
生成
customCell
-“customCellList”

我的问题是能否在
customCellList
类中获取
MainView
的实例(self)。

我尝试了superview,但没有得到
MainView
。我想在没有协议的情况下实现这一点


所以在这方面需要你的帮助。

你所要求的不是一个好主意,你应该找到另一种解决办法。它打破了MCV模式。 顺便说一句,如果您担心使用ARC和目标iOS>=5的内存问题,您可以创建对表视图本身的弱引用,并将视图控制器作为其委托或数据源属性(当然,如果VC是其中之一)。也可以创建对VC本身的弱引用
正如评论中所指出的,这不是一个好主意,最好换一种方法。如果需要更新单元格值,有很多方法可以重新加载tableview数据!通过在模型的VC上使用KVO、通知、委托等,您可以简单地触发对表视图的重新加载,而不需要在单元格中包含奇怪的引用

希望这能有所帮助。

你所问的不是一个好主意,你应该找到另一种解决办法。它打破了MCV模式。 顺便说一句,如果您担心使用ARC和目标iOS>=5的内存问题,您可以创建对表视图本身的弱引用,并将视图控制器作为其委托或数据源属性(当然,如果VC是其中之一)。也可以创建对VC本身的弱引用
正如评论中所指出的,这不是一个好主意,最好换一种方法。如果需要更新单元格值,有很多方法可以重新加载tableview数据!通过在模型的VC上使用KVO、通知、委托等,您可以简单地触发对表视图的重新加载,而不需要在单元格中包含奇怪的引用

希望这有帮助。

您可以使用响应器链访问视图控制器。假设customCell类是UITableViewCell子类,则应使用以下方法执行此任务:

@implementation customCell

- (UIViewController *)getViewController
{
   id vc = [self nextResponder];
   while(![vc isKindOfClass:[UIViewController class]] && vc!=nil)
   {
       vc = [vc nextResponder];
   }

   return vc;
}

@end

上述代码由框架提供。

您可以使用响应器链访问视图控制器。假设customCell类是UITableViewCell子类,则应使用以下方法执行此任务:

@implementation customCell

- (UIViewController *)getViewController
{
   id vc = [self nextResponder];
   while(![vc isKindOfClass:[UIViewController class]] && vc!=nil)
   {
       vc = [vc nextResponder];
   }

   return vc;
}

@end

上述代码由框架提供。

您还可以访问rootViewController:

UIViewController *controller = [UIApplication sharedApplication].keyWindow.rootViewController;

您还可以访问rootViewController:

UIViewController *controller = [UIApplication sharedApplication].keyWindow.rootViewController;

当你想要打破MVC的时候。。这假设您正在使用导航控制器作为窗口上的rootVC。为Swift 2更新

func visibleVC() -> UIViewController? {
        if let navVC: UINavigationController = UIApplication.sharedApplication().keyWindow?.rootViewController as? UINavigationController {
            if let vc: UIViewController = navVC.visibleViewController as? MyViewControllerClass {
                return vc
            }
        }
        return nil
    }

当你想要打破MVC的时候。。这假设您正在使用导航控制器作为窗口上的rootVC。为Swift 2更新

func visibleVC() -> UIViewController? {
        if let navVC: UINavigationController = UIApplication.sharedApplication().keyWindow?.rootViewController as? UINavigationController {
            if let vc: UIViewController = navVC.visibleViewController as? MyViewControllerClass {
                return vc
            }
        }
        return nil
    }

我有类似的问题,我的情况是当表视图自定义单元格中
textfield
的值更改时,在视图控制器中更改数组


我的解决方案是在
tableview
cellForRowAt
方法中为
uitextfield
添加委托,然后我可以在
textfielddendediting
方法中更改所有数据。因为它们都在一个类中,
ViewController
类。

我有类似的问题,我的情况是当表视图自定义单元格中的
textfield
的值更改时,更改View Controller中的数组


我的解决方案是在
tableview
cellForRowAt
方法中为
uitextfield
添加委托,然后我可以在
textfielddendediting
方法中更改所有数据。因为它们都在一个类中,
ViewController
类。

为什么要获取对表视图的引用?我认为这可能不是一个好的设计。单元格不需要访问它所在的视图控制器。你想达到什么目标?很可能有更好的方法。我认为在Objective-c中使用协议是一种方法。很抱歉,没有太大帮助。我需要主视图字典的实例,并在customcell中更新它的值。它处理自定义单元格控件的配置。这就是为什么@BaZinga视图应该有数据显示。视图不应接触视图控制器以获取其数据。为什么要获取对表视图的引用?我认为这可能不是一个好的设计。单元格不需要访问它所在的视图控制器。你想达到什么目标?很可能有更好的方法。我认为在Objective-c中使用协议是一种方法。很抱歉,没有太大帮助。我需要主视图字典的实例,并在customcell中更新它的值。它处理自定义单元格控件的配置。这就是为什么@BaZinga视图应该有数据显示。视图不应接触视图控制器以获取其数据。如果其中包含用于获取单元格视图控制器的代码,则可能会从Sensible更改其名称如果其中包含用于获取单元格视图控制器的代码,则可能会从SensibleHi@KDeogharkar更改其名称,请标记正确答案?您好@KDeogharkar,请您标记一个正确的答案好吗?