将数据发送到UITableViewCell-数据不会发送

时间:2019-05-23 19:07:33

标签: ios objective-c

每次我尝试将数组发送到此自定义tableview单元时,该数组都不发送(如array.count = 0所示,而它应该是9)。

这是我的public void CloseNotepad() { IntPtr hWnd = IntPtr.Zero; using (Process p = Process.GetProcessesByName("notepad").FirstOrDefault()) { hWnd = p.MainWindowHandle; } if (hWnd == IntPtr.Zero) return; var window = GetMainWindowElement(hWnd); var menuBar = GetWindowMenuBarElement(window); var fileMenu = GetMenuBarMenuByName(menuBar, "File"); if (fileMenu is null) return; // var fileSubMenus = GetMenuSubMenuList(fileMenu); bool result = InvokeSubMenuItemByName(fileMenu, "Exit", true); } private AutomationElement GetMainWindowElement(IntPtr hWnd) => AutomationElement.FromHandle(hWnd) as AutomationElement; private AutomationElement GetWindowMenuBarElement(AutomationElement window) { var condMenuBar = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.MenuBar); var menuBar = window.FindAll(TreeScope.Descendants, condMenuBar) .OfType<AutomationElement>().FirstOrDefault(ui => !ui.Current.Name.Contains("System")); return menuBar; } private AutomationElement GetMenuBarMenuByName(AutomationElement menuBar, string menuName) { var condition = new AndCondition( new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.MenuItem), new PropertyCondition(AutomationElement.NameProperty, menuName) ); if (menuBar.Current.ControlType != ControlType.MenuBar) return null; var menuItem = menuBar.FindFirst(TreeScope.Children, condition); return menuItem; } private List<AutomationElement> GetMenuSubMenuList(AutomationElement menu) { if (menu.Current.ControlType != ControlType.MenuItem) return null; ExpandMenu(menu); var submenus = new List<AutomationElement>(); submenus.AddRange(menu.FindAll(TreeScope.Descendants, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.MenuItem)) .OfType<AutomationElement>().ToArray()); return submenus; } private bool InvokeSubMenuItemByName(AutomationElement menuItem, string menuName, bool exactMatch) { var subMenus = GetMenuSubMenuList(menuItem); AutomationElement namedMenu = null; if (exactMatch) { namedMenu = subMenus.FirstOrDefault(elm => elm.Current.Name.Equals(menuName)); } else { namedMenu = subMenus.FirstOrDefault(elm => elm.Current.Name.Contains(menuName)); } if (namedMenu is null) return false; InvokeMenu(namedMenu); return true; } private void ExpandMenu(AutomationElement menu) { if (menu.TryGetCurrentPattern(ExpandCollapsePattern.Pattern, out object pattern)) { (pattern as ExpandCollapsePattern).Expand(); } } private void InvokeMenu(AutomationElement menu) { if (menu.TryGetCurrentPattern(InvokePattern.Pattern, out object pattern)) { (pattern as InvokePattern).Invoke(); } }

cell.h

@interface Scell : UITableViewCell ... @property (nonatomic, strong) NSMutableArray *lineInfo; @end

cell.m

这是我尝试发送数据的地方。

@implementation Scell - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { self.lineInfo = [[NSMutableArray alloc]init]; //set up labels here, etc. NSLog(@"Lines count: %li", self.lineInfo.count); } return self; }

setup.m

有人知道为什么不发送吗? setup.m中的NSLog显示9,但Scell中的NSLog显示0。

1 个答案:

答案 0 :(得分:0)

在cell.m中,初始化单元格时将打印行数,因此当时该数组中没有值,这就是为什么它打印零的原因。

从setup.m中的cellForRowAtIndexPath中,将temp的lineInfo分配给单元格的lineInfo属性。因此,因此cellForRowAtIndexPath打印正确的计数,但是initWithStyle显示为0。

希望这会有所帮助。